Art*_*yan 3 sql t-sql sql-server
我正在两张桌子上加入.一个是用户的表,另一个是高级用户列表.我需要在我的查询中首先显示高级会员.但是,仅仅因为它们在高级用户表中并不意味着它们仍然是高级成员 - 还需要检查IsActive字段.
所以基本上我需要按以下顺序返回结果:
现在我有以下内容:
SELECT Users.MemberId, PremiumUsers.IsActive FROM Users
LEFT JOIN PremiumUsers ON PremiumUsers.UserId = Users.Id
ORDER BY PremiumUsers.IsActive DESC
Run Code Online (Sandbox Code Playgroud)
这样做的问题在于它将非活跃的高级会员置于非高级会员之上.
(我正在使用MS SQL Server 2005)
dev*_*vio 12
尝试ORDER BY CASE
ORDER BY CASE
WHEN PremiumUsers.IsActive = 1 THEN 1
WHEN PremiumUsers.UserId IS NULL THEN 2
ELSE 3
END
Run Code Online (Sandbox Code Playgroud)
ORDER BY COALESCE(PremiumUsers.IsActive, 0) DESC
Run Code Online (Sandbox Code Playgroud)
这将使用非活动对NULL进行分组.
| 归档时间: |
|
| 查看次数: |
3236 次 |
| 最近记录: |