SQL: выберите N "самых последних" строк в порядке возрастания

Например, если мои данные выглядят следующим образом:

timestamp | message
100 | hello
101 | world
102 | foo
103 | bar
104 | baz

Как я могу выбрать три последних строки - 102, 103, 104 - в порядке возрастания?

Очевидный (для меня) … LIMIT 3 ORDER BY timestamp DESC вернет правильные строки, но порядок неверен.

Ответ 1

Используйте внутренний выбор, чтобы выбрать правильные строки, и внешний выбор, чтобы упорядочить их правильно:

SELECT timestamp, message
FROM
(
     SELECT *
     FROM your_table
     ORDER BY timestamp DESC
     LIMIT 3 
) T1
ORDER BY timestamp