Get the last N rows in the database in order?

If you don't want to use order:

select * from something Offset (select case when count(id)>10 then count(id)-10 end from something)

This should work:

WITH t AS (
    SELECT * FROM mytable ORDER BY record_date DESC LIMIT 5
)
SELECT * FROM t ORDER BY record_date ASC;

Why don't you just order the opposite way?

SELECT * 
FROM mytable 
ORDER BY record_date 
DESC LIMIT 5;

If you don't want to flip back correctly in the application, you can nest a query and flip them twice:

SELECT *
    FROM (SELECT * 
          FROM mytable 
          ORDER BY record_date 
          DESC LIMIT 5)
    ORDER BY record_date ASC;

... which turns out to be a pretty cheap operation.

Tags:

Postgresql