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

您可以在ORDER BY中添加if语句吗?

长孙景天
2023-03-14
问题内容

我正在努力实现以下目标:

我有一个ORDER BY语句,该语句可能会根据列A中存储的值而有所不同。

例如:

如果类型是成员,则按成员姓氏排序;如果类型是组,则按组名字排序

两者均以升序排列。

我对最终声明的最佳猜测是:

SELECT * 
  FROM table 
 WHERE STATUS = 'Active' 
 ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC

我知道这是错误的,但无法在其他地方找到信息。有任何想法吗?


问题答案:

好了,您可以在MySQL中使用该IF 函数
(请注意,function因为还有一个不相关的IF语句,所以要重点说明)…:

ORDER BY IF(TYPE='Member', LNAME, GROUPNAME) ASC

然而,在这种情况下,它似乎是更好的选择(从灵活性的角度来看)将是CASE语句:

ORDER BY 
    CASE `type` 
        WHEN 'Member' THEN LNAME 
        WHEN 'Group' THEN GROUPNAME
        ELSE 1 END 
    ASC

注意,从CASE到的整个块END将被视为单个“单位”。结果就是您要进行排序的原因(因此,为什么ASC在块之后而不是在块内部)…



 类似资料:
  • 问题内容: 你可以添加新的语句(例如,,)Python的语法? 说,允许 要么, 如果您 应该的话 ,不要太多,但如果可能的话,就可以了(只需修改python解释器代码即可) 问题答案: 您可能会发现这很有用-Python内部:在Python上添加新语句,引用如下: 本文旨在更好地了解Python前端的工作方式。仅仅阅读文档和源代码可能会有点无聊,因此我在这里采用动手实践的方法:我将向Python

  • 问题内容: 我有点在等待这个问题的答案。 我很想知道是否可以在if子句中检查变量的同时保存变量。 假设我有这段代码。 我现在独立处理“失败”状态,即使结果相同。我可以像这样将它们聚在一起: 已经有很多更整洁的代码。如果foo为null,它将在那里停止并且不会尝试foo.getBar(在if中),因此我不会获得NPE。我要增强的最后一件事是主要问题:我真的给两次foo.getBar()打电话吗?如果

  • 问题内容: 你可以添加新的语句(例如)Python的语法? 说,允许 要么, 如果你应该的话,并没有那么多,但是,如果可能的话,就不那么多了(只需修改python解释器代码) 问题答案: 本文旨在更好地了解Python前端的工作方式。仅阅读文档和源代码可能会有点无聊,因此我在这里采用动手方法:我将向untilPython 添加一条语句。 本文的所有编码都是针对Python Mercurial存储库

  • 是否有一种执行if语句的单行方法,该语句只使用布尔值触发一次? 与此类似的东西。

  • 我有以下问题。当满足特定条件时,我希望将值写入一行。整个事情的工作目前也在这里我的代码: 我希望第二个If语句将值放在与第一个If语句相同的行中,这样就不会创建新行。有人知道吗?

  • 我是编码的新手。我想在我当前的代码中添加更多的变量。现在,如果你输入“dog”,它就会打开YouTube。例如,你如何添加另一个变量,这样,如果你输入dog,它仍然会打开youtube,但如果你输入“cat”,它会打开Netflix?你是怎么做到的?感谢所有帮助你的人。请记住,我仍然是一个新的编码,所以请不要批评。