我需要一个 SQL 查询,该查询在查询结果末尾执行 ORDER ASC > 0,然后 = 0。 SELECT * FROM TABLE WHERE 排名>0 ORDER BY 排名 ASC 然后将排名为 0 的放在最后
姓名排名 马丁 0 鲍勃2 3月8日 马里奥 0 索菲亚4
查询后: 姓名排名 鲍勃2 三月 4 日 索菲亚8号 马丁 0 马里奥0
谢谢!
最佳答案
只需这样做:
ORDER BY rank=0 ASC, rank ASC
表达式 rank=0
计算为 bool 表达式,对于 FALSE 返回 0
,对于 TRUE 返回 1
,或NULL
。
更符合 ANSI 标准的 rank=0
等效语法为:
CASE WHEN rank = 0 THEN 1 WHEN rank IS NULL THEN NULL ELSE 0 END
<小时/>
根据示例数据,这显示了按 rank=0
排序如何实现结果。
Name Rank rank=0
------- ---- ------
Bob 2 0
Sophia 4 0
Marc 8 0
Mario 0 1
Martin 0 1
(注意:具有相同排名值的行的顺序是不确定的;无法保证 Mario
和 Martin
的顺序...任何一种方式都是兼容的与 ORDER BY 规范。)
关于mysql - SQL 按 ASC 排序超过 0,然后 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30872075/