当前位置: 首页 > 面试题库 >

SQL条件排序依据

姜振濂
2023-03-14
问题内容

我正在对两个表进行联接。一个是用户表,另一个是高级用户列表。我需要让高级会员首先出现在我的查询中。但是,仅因为它们位于高级用户表中并不意味着它们仍然是高级成员-
还有一个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)


问题答案:
ORDER BY COALESCE(PremiumUsers.IsActive, 0) DESC

这会将NULL与非活动分组。



 类似资料:
  • 问题内容: 我在SQL Server2005中有一个SQL查询,当包含条件顺序时,该查询将中断。当我删除订单时,查询有效。当我按条件明确地写顺序(例如按p.Description的顺序)时,它就起作用了。当我添加条件顺序依据时,我得到了错误, SQL Server没有显示导致该错误的代码行。我想知道如何解决此问题,以便可以使用条件排序依据或对转换失败的列进行故障排除。 问题答案: 根据先前的答案,

  • 问题内容: 我有一个名为Gift的表,该表与一个名为ClickThrough的表具有一对多关系- 该表指示单击了该特定Gift的次数。我需要查询所有的Gift对象,按ClickThrough计数排序。我不需要返回ClickThrough计数,因为我不需要做任何事情,我只想将其用于订购即可。 我需要查询以直接返回Gift对象的列表,只是按ClickThrough计数排序。如何使用Criteria A

  • 问题内容: 感觉应该有一个基本的解决方案,但我似乎没有。 进行以下查询: 我想有效地做到这一点: 我并不是很想选择DatePublished,但是按它进行排序似乎很有意义。那是行不通的。 基本上,我想按最新的DatePublished文章对类别进行排序。 问题答案: 由于执行了,因此需要在非分组列上运行一些聚合函数。 将从每个类别中选择最后发表文章的日期,并相应地订购类别。

  • 问题内容: 我有一张标签表,想从列表中获得计数最高的标签。 样本数据如下所示 使用 让我得到正在寻找的完美数据。但是,我想对它进行组织,以使最高的标签数排在首位,并限制它仅向我发送前20个左右。 我试过了 而且我不断收到“组功能的无效使用-ErrNr 1111” 我究竟做错了什么? 我正在使用MySQL 4.1.25-Debian 问题答案: 在所有版本的MySQL中,只需在SELECT列表中为聚

  • 问题内容: 我试图在存储过程中使用动态顺序,因此我可以将希望数据返回的顺序作为参数传递给存储过程。这对于VARCHAR字段工作正常,但是如果我尝试对int或datetime字段进行排序,则会出错,我的代码如下 如果我取消对case语句中的第二个WHEN的注释,则会出现以下错误 “将数据类型varchar转换为bigint时出错。” 如果不使用case语句,则可以按此字段排序。 有任何想法吗? 问题

  • 问题内容: 我有这张桌子(简体): 我需要从表中选择所有项目,并按以下方式排序: 1.价格> 0.00首先的项目,按价格ASC排序 2.价格= 0.00最后的项目,按ID排序 我尝试了这个: 我得到类似的结果 我如何建立查询 ? 感谢您的时间 问题答案: 这将达到目的。