当前位置:  开发笔记 > 数据库 > 正文

SQL条件顺序依据

如何解决《SQL条件顺序依据》经验,为你挑选了2个好方法。

我正在两张桌子上加入.一个是用户的表,另一个是高级用户列表.我需要在我的查询中首先显示高级会员.但是,仅仅因为它们在高级用户表中并不意味着它们仍然是高级成员 - 还需要检查IsActive字段.

所以基本上我需要按以下顺序返回结果:

活跃的高级用户

常规和非活动高级用户

现在我有以下内容:

SELECT Users.MemberId, PremiumUsers.IsActive FROM Users
LEFT JOIN PremiumUsers ON PremiumUsers.UserId = Users.Id
ORDER BY PremiumUsers.IsActive DESC

这样做的问题在于它将非活跃的高级会员置于非高级会员之上.

(我正在使用MS SQL Server 2005)



1> devio..:

尝试ORDER BY CASE

ORDER BY CASE
    WHEN PremiumUsers.IsActive = 1 THEN 1
    WHEN PremiumUsers.UserId IS NULL THEN 2
    ELSE 3
END



2> Joel Coehoor..:
ORDER BY COALESCE(PremiumUsers.IsActive, 0) DESC

这将使用非活动对NULL进行分组.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有