先按特定ID排序然后按休息

时间:2016-01-05 15:15:12

标签: sql-server sql-server-2008 tsql

考虑具有两个Column RoleId和User Name

的样本表
Role | Name
  1      AB
  3      A
  1      ABC
  2      D
  2      B
  3      Abb
  1      E
  4      TE

如何使用SQL查询获取以下输出。

Role | Name
  3      A
  3      Abb
  1      AB
  1      ABC
  1      E
  2      B
  2      D
  4      TE

我只想先按角色ID 3排序,然后再保留Roleid。 目前我正在使用Union来实现//

SELECT * FROM (SELECT * From @temp 
         Where roleid=3
UNION ALL
SELECT * From @temp 
         Where roleid != 3
 ) as X 

3 个答案:

答案 0 :(得分:10)

您可以使用大小写进行更复杂的排序:

<textarea ui-tinymce="tinymceOptions" ng-controller="RichTextCtrl"></textarea>

答案 1 :(得分:3)

select *
from @temp
order by CASE WHEN Role = 3 THEN 0 ELSE Role END, Name

答案 2 :(得分:2)

我通常使用NULLIF,但情况可能更快?

SELECT   *
FROM     @temp
ORDER BY NULLIF(Role,3), Name