Вернуть n-ую запись из запроса MySQL
Я хочу вернуть 2-ю, 3-ю или 4-ю запись из запроса MySQL (на основе запроса по возрастанию идентификатора)
Проблема в том, что я не буду знать идентификатор, только то, что это третья строка в запросе.
6 ответов
SELECT * FROM table ORDER BY ID LIMIT n-1,1
Там написано, вернуть одну запись, начиная с записи n.
Принятый ответ неверен на 1, смещение индексируется нулем:
Из документа:
С двумя аргументами первый аргумент задает смещение первой строки для возврата, а второй задает максимальное количество строк для возврата. Смещение начальной строки 0 (не 1):
ВЫБРАТЬ * ОТ ТАБЛИЧНОГО ОГРАНИЧЕНИЯ 5,10; # Получить строки 6-15
Таким образом, правильный запрос будет
SELECT * FROM table ORDER BY ID LIMIT n-1,1
Например, "LIMIT 10, 5", он пропустит количество записей, указанных первым номером, а затем покажет количество записей, указанных вторым номером. Другими словами, это "LIMIT skip, show".
SELECT * FROM tblTesting LIMIT 3, 6
будет отображаться с 4-й по 9-ю запись, всего будет отображено 6 записей
если вы хотите показать в порядке убывания используйте DESC
SELECT * FROM tblTesting ORDER BY column_name DESC LIMIT 3, 6
Используйте предложение limit (добавьте "limit 3, 1" в конец вашего запроса, чтобы выбрать только третью строку).
Вот еще немного информации: http://php.about.com/od/mysqlcommands/g/Limit_sql.htm
MYSQL: смещение всегда начинается с нуля
Значение OFFSET означает, что не начинается со значения OFFSET
Пример: записи 1, 2, 3, 4, 5.
OFFSET 1 означает возврат 2-го значения, так как OFFSET 2 возвращает 3-е значение и т. Д.
SELECT table_column FROM Table GROUP BY table_column DESC LIMIT 1 OFFSET 1;
ИЛИ ЖЕ
SELECT table_column FROM Table GROUP BY table_column DESC LIMIT 3 OFFSET 1;
Он вернет 3 записи из 2-й записи
Если вы используете PHP для обработки ваших записей, то вы можете использовать выражения из руководства PHP:
<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER BY Name";
if ($result = mysqli_query($link, $query)) {
/* seek to row no. 400 */
mysqli_data_seek($result, 399);
/* fetch row */
$row = mysqli_fetch_row($result);
printf ("City: %s Countrycode: %s\n", $row[0], $row[1]);
/* free result set*/
mysqli_free_result($result);
}
/* close connection */
mysqli_close($link);
?>
Подробнее читайте в руководстве по PHP: http://php.net/manual/en/mysqli-result.data-seek.php