Выберите последние n строк из MySQL


Я хочу выбрать последние 50 строк из базы данных MySQL в столбце id что это первичный ключ. Цель состоит в том, что строки должны быть отсортированы по id на ASC заказа, Вот почему этот запрос не работает

SELECT 
    *
FROM
    `table`
ORDER BY id DESC
LIMIT 50;

также примечательно, что строки могут быть обработаны (удалены), и поэтому следующий запрос также не работает

SELECT 
    *
FROM
    `table`
WHERE
    id > ((SELECT 
            MAX(id)
        FROM
            chat) - 50)
ORDER BY id ASC;

вопрос: как можно получить последний N строк из базы данных MySQL, которые можно манипулировать и быть в порядке ASC ?

3 89

3 ответа:

Вы можете сделать это с подзапросом:

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 50
) sub
ORDER BY id ASC

Это позволит выбрать последние 50 строк от table, а затем упорядочить их в порядке возрастания.

SELECT * FROM table ORDER BY id DESC,datechat desc LIMIT 50

если у вас есть поле даты, которое хранит дату(и время), на котором был отправлен чат, или любое поле, которое заполнено инкрементно(order BY DESC) или desinscrementally( order by ASC) данные на строку, поместите его в качестве второго столбца, на котором данные должны быть упорядочены.

вот что сработало для меня!!!! надеюсь, это поможет!!!!

SELECT * FROM table ORDER BY id DESC LIMIT 50

сохранить ресурсы, сделать один запрос, нет необходимости сделать вложенные запросы