我有一个包含datetime列的事务的表。我正在尝试选择最后的'n'个记录(即20行),但是将它从最旧到最新排序。
SELECT *
FROM table
WHERE 1=1
ORDER BY table.datefield DESC
LIMIT 20;
给我20个最近的,但顺序相反。
这可能在一个查询中,或者我是否必须进行查询才能获得总行数,然后根据它调整限制,以便我可以执行table.datefiled ASC然后限制(总行数 - n ),n
答案 0 :(得分:2)
围绕原始SELECT构建SELECT并将其转换为派生表应该这样做
SELECT t.*
FROM (
SELECT *
FROM table
WHERE 1=1
ORDER BY table.datefield DESC
LIMIT 20
) t
ORDER BY t.datefield