SQL ORDER由`no`结尾的NULL

时间:2009-12-10 11:08:25

标签: mysql sql-order-by

我有一个MySql查询,通过no列命令我结果(int,可以为null)。 简单的例子:

SELECT * FROM table ORDER BY no ASC

我想将结果集排序为

1, 2, 3, 10, 52, 66, NULL, NULL, NULL

但我得到

NULL, NULL, NULL, 1, 2, 3, 10, 52, 66

是否可以使用SQL查询?

6 个答案:

答案 0 :(得分:31)

你可以尝试一下吗?

ORDER BY ISNULL(no),no;

答案 1 :(得分:4)

您可以使用CASE语句来调整排序:

SELECT * 
FROM table 
ORDER BY case when no is null then 2 else 1 end, no

首先命令“nullableness”,然后no秒。

答案 2 :(得分:4)

SELECT * FROM table ORDER BY ISNULL(field), field ASC;

答案 3 :(得分:2)

SELECT * FROM table ORDER BY COALESCE(no,999999) ASC

如果你的数字自然大于那么,只需用更大的东西替换999999。

答案 4 :(得分:1)

好的,我想我明白了:

SELECT * FROM table WHERE no IS NOT NULL ORDER BY no ASC UNION
SELECT * FROM table WHERE no IS NULL

还是有更好的方法吗?

答案 5 :(得分:0)

SELECT * FROM table ORDER BY no ASC NULLS LAST