选择按X排序的前N个记录,但是按逆序排序结果

I. *_*edy 7 sql selection

我正在尝试获得前N个记录(当按某些列X排序时),但结果设置的顺序相反.以下陈述不正确,但可能演示了我所追求的内容:

SELECT * FROM (SELECT TOP 10 * FROM FooTable ORDER BY X DESC) ORDER BY X ASC
Run Code Online (Sandbox Code Playgroud)

例如,列X可以是ID或时间戳; 我想要最新的10条记录,但希望它们按照时间顺序返回.

dav*_*vek 10

SELECT * FROM 
   (SELECT TOP 10 * FROM FooTable ORDER BY X DESC) as myAlias 
ORDER BY X ASC 
Run Code Online (Sandbox Code Playgroud)

即你的子查询可能需要一个别名,但除此之外它应该有效.


SQL*_*ace 5

尝试

SELECT * FROM 
(SELECT TOP 10 * FROM FooTable ORDER BY X DESC) temp  --alias
ORDER BY X
Run Code Online (Sandbox Code Playgroud)

或使用公用表表达式 (CTE)

WITH Temp AS (SELECT TOP 10 * FROM FooTable ORDER BY X DESC) 

SELECT * FROM temp 
ORDER BY X
Run Code Online (Sandbox Code Playgroud)