如何在 SQL 中显示第一个数值范围?

How do I show a range of numerical values first in SQL?

我该如何安排它,以便它仍然按时间排序,但任何小于 10 的 ID 都会首先显示?

Time  |   ID
9:15  |   1
9:20  |   5
9:25  |   12
9:30  |   3
9:35  |   26
9:40  |   22
9:45  |   15

这可以用 "order by" 代码实现吗?或者我还需要其他东西吗?

我正在使用 Microsoft SQL Server 2012。

编辑:这是我希望的输出:

Time  |   ID
9:15  |   1
9:20  |   5
9:30  |   3   
9:25  |   12
9:35  |   26
9:40  |   22
9:45  |   15

ID 12 和 3 将被切换。因此,优先级将放在 ID 号上。

使用这个自定义排序

SELECT *
FROM   Yourtable
ORDER  BY CASE
            WHEN id <= 10 THEN id
            ELSE 11-- Just a number greater then 10 to keep the id>10 after id<=10
          END ASC,
          time 

演示

架构设置

create table #tts(Time  time,   ID int)
insert #tts values
('9:00' ,21 )
('9:15' ,1 ),
('9:20' ,5  ),
('9:25' ,12),
('9:30' ,3  ),
('9:35' ,26),
('9:40' ,22),
('9:45' ,15)

查询

SELECT *
FROM   #tts
ORDER  BY CASE
            WHEN id <= 10 THEN id
            ELSE 11
          END ASC,
          time 

使用 ORDER BY 的嵌套查询也可以工作,尽管您最终会得到第 3 个排序列:

SELECT t.* FROM
( SELECT Time
        ,ID
        ,CASE WHEN ID < 10 THEN 1 ELSE 2 END AS 'ColOrder'
  FROM YourTable) as t
ORDER BY t.ColOrder, t.Time