我需要一个能够进行ORDER ASC>的SQL查询。 0,然后在查询结果的末尾= 0。 SELECT * FROM TABLE WHERE rank> 0 ORDER BY rank ASC 然后,把那些等级为0的那些放在最后
名称排名 马丁0 鲍勃2 马克8 马里奥0 索菲亚4
查询后: 名字排名 鲍勃2 马克4 索菲亚8 马丁0 马里奥0
谢谢!
答案 0 :(得分:2)
这样做:
ORDER BY rank=0 ASC, rank ASC
表达式 rank=0
计算为布尔表达式,返回0
表示FALSE,1
表示TRUE,或NULL
。
rank=0
更符合ANSI标准的等效语法是:
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规范。 )
答案 1 :(得分:0)
尝试以下
SELECT *, IF(rank>0,1,0) as Ordering FROM TABLE ORDER BY Ordering DESC, rank ASC
然后,您可以使用Ordering DESC
更改排序,以便在结果集的开头或结尾显示ZERO等级的结果