sqlserver-按键值的顺序排序



问题是:我有一个表,我想要用特殊id对项目进行排序。

例如:

Request(Id, Code, Phone, CreatedDate)
1  100  98351265  2014/2/2
2  101  98351269  2014/3/2 
3  102  98351985  2014/5/2 
4  103  98351654  2014/9/2

Id=3 订购

结果:

3  102  98351985  2014/5/2 
1  100  98351265  2014/2/2
2  101  98351269  2014/3/2 
4  103  98351654  2014/9/2

存在按键值顺序排列的差。

如果您想首先查看具有Id = 3的记录,以及所有其他按Id排序的记录,您可以这样放置:

  select *
    from MyTable
order by case
           when Id = 3 then
             0
           else
             1
         end,    -- <- First, extract records with Id = 3
         Id desc -- <- Next, sort by Id

可能很慢UNION是的一种解决方案

 SELECT *,1 as rank FROM tbl where id=3
           UNION 
 SELECT *,2 as rank FROM tbl where id!=3 order by rank,id

像这样尝试

SELECT *
From Table1
Order By CASE When Id = 3 Then 0 Else 1 End Asc,ID Desc

最新更新