English 中文(简体)
SQL条件排序
原标题:
  • 时间:2008-11-25 18:16:03
  •  标签:

我正在对两个表进行连接。一个是用户表,另一个是高级用户列表。我需要在我的查询中让高级会员首先显示。然而,仅仅因为他们在高级用户表中并不意味着他们仍然是高级会员 - 还需要检查一个“IsActive”字段。

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

  • Active Premium Users
  • Regular and Inactive Premium Users

现在我已经有了以下内容:

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

这个问题是它将非活跃的高级会员放在非高级会员之上。

我正在使用 MS SQL Server 2005。

最佳回答
ORDER BY COALESCE(PremiumUsers.IsActive, 0) DESC

那将把 NULL 和非激活的分组。

问题回答

尝试使用ORDER BY CASE语句排序。

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




相关问题
热门标签