2016-06-27 3 views
1

В принципе, весь мой вопрос - это заголовок. Не очень-то много описать. Я просто хочу выбрать последние 20 строк из SQL, заказанных asc.Выберите последние 20 строк из SQL-заказа ASC

Это не работает, как ожидалось

SELECT * FROM chat ORDER BY id ASC LIMIT 20 

Он возвращает первые 20 строк в порядке возрастания, но я хочу последние 20 строк в порядке возрастания.

Любая помощь очень ценится.

UPDATE

Что делать, если мой SQL выглядит следующим образом?

SELECT username, text, date FROM chat ORDER BY id ASC LIMIT 20 
+0

Tag СУБД. 'LIMIT' является специфичным для продукта, – jarlh

ответ

1

Один из вариантов - написать запрос, который дает 20 записей, которые вы хотите. Это будет запрос в по убыванию заказать по id. Затем вы можете обернуть это в подзапрос и выбрать во время заказа в по возрастанию заказать по id.

SELECT t.* 
FROM 
(
    SELECT * 
    FROM chat 
    ORDER BY id DESC 
    LIMIT 20 
) t 
ORDER BY t.id ASC 

Вот рабочий Скрипки, который вы можете попробовать: использованный

SQLFiddle

+0

Теперь, как это сделать, если мой SQL выглядит так? если я просто выберите * из (продолжаю мой sql), он выдает ошибку ... Почему? мой текущий SQL: SELECT имя пользователя, текст, дата FROM chat ORDER BY id ASC LIMIT 20 –

+0

@StevenDropper Извините, я должен был написать 'SELECT t. * FROM (SELECT * ...) t ORDER BY t.ASC'. .. вам, вероятно, придется использовать псевдоним во внешнем 'SELECT'. –

+0

Не могли бы вы взглянуть на обновленный вопрос, пожалуйста? –

Смежные вопросы