SQL 先固定特殊的几行数据之外再按照某一字段排序方法(CASE 字段排序(CASE WHEN THEN)

查询用户表的数据,管理员用户始终在最前面,然后再按照CreateTime排序:

SELECT TOP
    50 * 
FROM
    [dbo].[User] 
WHERE
    ParentID = '**' 
ORDER BY
    ( CASE WHEN RoleName = '管理员' THEN 0 ELSE 1 END ),
    CreatedTime DESC

case when 的其他使用方法,给用户表分类,管理员的用户为A类,其他为B类:

SELECT TOP
    50 * ,(CASE WHEN RoleName ='管理员' THEN 'A' ELSE 'B' END) AS NN
FROM
    [dbo].[User] 
-- 或者
SELECT TOP
    50 * ,(CASE RoleName WHEN '管理员' THEN 'A' ELSE 'B' END) AS NN
FROM
    [dbo].[User] 
原文地址:https://www.cnblogs.com/MrZheng/p/11507558.html