Вернуть 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

Другие вопросы по тегам