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

时间:2013-09-25 13:51:21

标签: mysql sql sorting sql-order-by

在典型的ORDER BY clasue中,如果列只有数值。那么,怎样才能进行查询,以便结果将数字从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..

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

2 个答案:

答案 0 :(得分:4)

您可以使用以下内容:

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

<强> Example on SQL Fiddle

答案 1 :(得分:0)

SELECT * 
FROM TABLEONE 
ORDER BY (col1 > 0) DESC, ABS(col1) ASC;