在单个查询中使用“Order by”两次

时间:2012-11-22 11:49:06

标签: sql sql-server tsql

我有一个包含2列的表格。 Date_Réserv e(日期类型),Heure_Réserve(时间类型)

我想要做的是选择Date_Réserve排序的结果,然后我得到的结果由Heure_Réserve订购。

这是我试过的查询:

select * from (select Date_Réserve,Heure_Réserve from réserve order by Date_Réserve)t order by Heure_Réserve

但它给了我这个错误:

  

ORDER BY子句在视图,内联函数中派生无效   表和子查询,除非还指定了TOP。

6 个答案:

答案 0 :(得分:5)

您不需要在子查询中使用ORDER BY - 它在那里毫无意义。

对于主要/次要排序,您使用单个ORDER BY

SELECT Date_Réserve,Heure_Réserve 
FROM réserve 
ORDER BY Date_Réserve, Heure_Réserve

答案 1 :(得分:4)

列出以逗号分隔的所需列:

select Date_Réserve, Heure_Réserve from réserve
order by Date_Réserve, Heure_Réserve

答案 2 :(得分:2)

试试这个:

SELECT Date_Réserve, Heure_Réserve FROMréserve ORDER BY Date_Réserve ASC, Heure_Réserve ASC

答案 3 :(得分:2)

如果您想按多列排序:

select Date_Réserve,Heure_Réserve
from réserve
order by Date_Réserve, Heure_Réserve

如果没有,子查询中的顺序是无用的。

答案 4 :(得分:1)

一个子句,两部分

select 
            Date_Réserve,
            Heure_Réserve 
    from 
            réserve 
    order by 
             Date_Réserve, 
             Heure_Réserve

-

如果这只是一个示例,并且您确实需要按照您可以执行的外部查询中不可用的列来排序结果,

select 
            Date_Réserve,
            Heure_Réserve 
    from 
        (
            select 
                    (ROWNUMBER() OVER ORDER BY Date_Réserve) do,
                    Date_Réserve,
                    Heure_Réserve 
                from
                    réserve 
        )
    order by 
             do, 
             Heure_Réserve

但是,正如您所看到的那样,在您的方案中,这将毫无意义且不合适。

答案 5 :(得分:0)

使用TOP语句时,可以在子查询中使用order by。

select * from 
(select TOP 100 PERCENT Date_Réserve,Heure_Réserve from réserve order by Date_Réserve) t order by Heure_Réserve