我正在努力实现以下目标:
我有一个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在块之后而不是在块内部)...来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。