mysql - ORDER BY 子句如何从 1 而不是 0 开始对记录进行排序

标签 mysql sql sorting sql-order-by

在典型的 ORDER BY 子句中,如果列只有数值。那么,如何进行查询才能使结果将数字从 1 排序到无穷大,其余的零和负数最后出现。

我有这张表:TABLEONE

col1 | col2
0    | Zero
5    | Five
-2   | NA
1    | One
2    | Two
7    | NA

如果我通过这个查询:

SELECT * FROM TABLEONE ORDER BY col1;

行按此顺序排序

-2, 0, 1, 2, 5, 7

我想要的是:

1, 2, 5, 7, 0, -2, -4 ... etc..

是否可以更改我们现有的查询以获得该结果。谢谢。

最佳答案

您可以使用以下内容:

SELECT  *
FROM    T
ORDER BY SIGN(Col1) DESC, ABS(Col1);

Example on SQL Fiddle

关于mysql - ORDER BY 子句如何从 1 而不是 0 开始对记录进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006832/

相关文章:

mysql - 如何检查某个值是否存在或是否存在两次?

mysql - 初学者 SQL 查询有困难

java - 字母数字 - 字母数字排序

php - 要导出的脚本

php - Internet Explorer 未在链选择上显示 <option> 值

java - Java医生约会预约数据库(mysql)程序..在设计约会架构时遇到麻烦

c# - 快速插入 SQL 数据和相关行的最佳方法是什么?

sql - 使用 Linq to SQL 时使用多列(复合)主键是否有益?

sorting - 哈希DoS : how can worst case complexity of Hashtable be O(n^2)?

javascript - 对单个数组中的两种类型的对象进行排序