mysql - SQL 按 ASC 排序超过 0,然后 0

标签 mysql

我需要一个 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

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

关于mysql - SQL 按 ASC 排序超过 0,然后 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30872075/

相关文章:

mysql - 带条件的 LEFT JOIN

php - 将 DIV 转换为输入元素并将数据保存到数据库中

java - Apache Olingo 的 jdbc 连接器

mysqlimport --- 附加到带有索引的表

php - 我应该使用 PDO 在自己的数据库类中抛出异常吗?

php - phpmyadmin 中的外键在新闻源中给出错误

c# - 如何使用 C# 代码在 MySql 数据库中插入 DateTime

php - 新闻聚合网站托管

按多列分组时,MySQL 查询隐藏结果

php - 如何使用 PHP 和 mysql 通过 id 打开新页面?