1

在典型的 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..

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

4

2 回答 2

4

您可以使用以下内容:

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

SQL Fiddle 示例

于 2013-09-25T13:57:25.257 回答
0
SELECT * 
FROM TABLEONE 
ORDER BY (col1 > 0) DESC, ABS(col1) ASC;
于 2013-09-25T13:59:44.627 回答