我正在使用Microsoft SQL Server,并发现自己陷入了困境。我想基本上对订单做订单。我当前的SQL查询是:
SELECT top 10 labelid
FROM mytable
ORDER BY labelid DESC
这将按降序返回labelid列的前10个值。我想查询前10个值,并使结果按升序排列。
有没有一种简单的方法可以在不使用procedure / plsql / etc的情况下执行此操作?
答案 0 :(得分:3)
您只需将查询用作派生表:
SELECT *
FROM (SELECT TOP 10 labelid
FROM mytable
ORDER BY labelid DESC) A
ORDER BY labelid;
答案 1 :(得分:1)
Lamak的解决方案很棒,派生表很有趣但是在使用Sql Server和其他具有它们的平台时组织代码的一种非常有用的方法是公用表表达式[CTE] 而你正在查找/学习并查看窗口函数,因为它们很有帮助。
;WITH cte AS (
SELECT
labelid
,ROW_NUMBER() OVER (ORDER BY labelid DESC) as RowNum
FROM
mytable
)
SELECT *
FROM
cte
WHERE
RowNum <= 10
ORDER BY
lableid
答案 2 :(得分:0)
Select * from (
SELECT top 10 labelid FROM mytable ORDER BY labelid DESC) order by labelid