как выбрать 5 последних строк из моего mysql - PullRequest
3 голосов
/ 15 марта 2011

Я хотел знать команду sql, чтобы получить 5 последних строк из моей таблицы?Ниже мой sql запрос.Как я собираюсь сделать, чтобы он мог выбрать 5 последнюю строку базы на строке № для обработки?

$query = 
"SELECT lat, lng, DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS 
  datetime FROM markers1 WHERE 1";

Ответы [ 5 ]

7 голосов
/ 15 марта 2011

Вам необходимо упорядочить результаты и установить лимит.

Предполагая, что дата / время - это то, что вы хотели заказать:

$query = "
    SELECT 
        lat, 
        lng, 
        DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime 
    FROM markers1 WHERE 1
    ORDER BY datetime DESC
    LIMIT 5
";

EDIT: Чтобы ответить на комментарий ОП: «результат, который я получаю, это начало 50-й строки для первого запроса, а затем 49, 48, 47, 46. Возможно ли, я могу получить эту строку из строки 46, 47, 48, 49, 50?».

Вы можете сделать это с результатом в PHP, извлекая строки и сохраняя их в массиве и обращая массив. Я не думаю, что вы можете эффективно перебрать ресурс результата MySQL в обратном порядке.

Для этого в запросе SQL необходимо создать временную таблицу с исходным запросом:

$query = "
    SELECT 
        lat,
        lng,
        DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime 
    FROM (
        SELECT 
            lat, 
            lng, 
            datetime
        FROM markers1 WHERE 1
        ORDER BY datetime DESC
        LIMIT 5
    ) AS tmp_markers
    ORDER BY datetime ASC
";

Результат начального запроса используется в качестве таблицы для поиска в новом запросе, который упорядочен по дате и по возрастанию. Мне пришлось применить DATE_FORMAT к внешнему запросу, потому что нам нужно поле datetime, чтобы упорядочить снова.

1 голос
/ 15 марта 2011

Лучший способ сделать это - добавить номер строки и затем отменить ваш запрос на основании этого, так как у нас нет никаких гарантий, что ваше поле даты и времени увеличивается в хронологическом порядке; и я также предполагаю, что под 5 последними строками вы подразумеваете последние 5 добавленных в таблицу, а не 5 с самым последним datetime.

SELECT
    lat
    , lng
    , DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime
    , @rownum:=@rownum+1 `RowNum`
FROM
    markers1
    , (SELECT @rownum:=0) `r`
WHERE 1
ORDER BY RowNum DESC
LIMIT 5

Посетите блог этого парня , чтобы узнать, какое решение я использовал.

1 голос
/ 15 марта 2011

просто добавьте:

ORDER BY datetime DESC
LIMIT 5
0 голосов
/ 30 августа 2016

Проверьте мой запрос на последние 5 записей

SELECT * FROM notices where organizationid = $orgid ORDER BY `notices`.`id` DESC LIMIT 5

Итак, самое важное это ORDER BY notices.id DESC LIMIT 5

0 голосов
/ 14 сентября 2014

Может быть очень поздно, но это хорошо и просто.

select * from table_name order id desc limit 5

Этот запрос вернет набор из 5 последних значений (5 последних строк), которые вы вставили в таблицу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...