我有一个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查询?
答案 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