ASC的SQL oder超过0,然后是0

时间:2015-06-16 15:34:35

标签: mysql

我需要一个能够进行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

谢谢!

2 个答案:

答案 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

(注意:具有相同排名值的行的顺序是不确定的;不能保证MarioMartin的顺序......任何一种方式都符合ORDER BY规范。 )

答案 1 :(得分:0)

尝试以下

SELECT *, IF(rank>0,1,0) as Ordering FROM TABLE ORDER BY Ordering DESC, rank ASC 

然后,您可以使用Ordering DESC更改排序,以便在结果集的开头或结尾显示ZERO等级的结果