考虑一个包含两列 RoleId 和用户名的示例表
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 订购,然后再按剩余角色 ID 订购。 目前我正在使用 Union 来实现 //
SELECT * FROM (SELECT * From @temp
Where roleid=3
UNION ALL
SELECT * From @temp
Where roleid != 3
) as X
您可以使用大小写进行更复杂的排序:
select *
from @temp
order by case when Role = 3 then 0 else 1 end, Role, Name
select *
from @temp
order by CASE WHEN Role = 3 THEN 0 ELSE Role END, Name
我通常使用 NULLIF,但 case 可能会更快?
SELECT *
FROM @temp
ORDER BY NULLIF(Role,3), Name
从
table
中选择*,按FIELD(名称,'A')DESC,名称排序