Выберите последние 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?

Ответ 1

Вы можете сделать это с помощью суб-запроса:

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

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

Ответ 2

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

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

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

Ответ 3

SELECT * FROM table ORDER BY id DESC LIMIT 50

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

Ответ 4

select * from Table ORDER BY id LIMIT 30

Примечания: * id должен быть уникальным. * Вы можете контролировать количество возвращаемых строк, заменив 30 в запросе