我有一个MySql查询命令我的结果为no
column(int,可以为null)。 简单的例子:SQL ORDER by`no`在最后为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查询?
我有一个MySql查询命令我的结果为no
column(int,可以为null)。 简单的例子:SQL ORDER by`no`在最后为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查询?
你可以试试吗?
ORDER BY ISNULL(no),no;
好吧,我想我明白了:
SELECT * FROM table WHERE no IS NOT NULL ORDER BY no ASC UNION
SELECT * FROM table WHERE no IS NULL
或者有什么更好的办法?
这工作太:) – 2009-12-10 11:11:50
但随着复杂的查询 - 几个'JOIN's它会害怕。 :) – hsz 2009-12-10 11:16:43
SELECT * FROM table ORDER BY COALESCE(no,999999) ASC
只要用更大的东西替换999999,如果你的数字自然大于这个数字。在 “nullableness” 第一和第二no
SELECT *
FROM table
ORDER BY case when no is null then 2 else 1 end, no
此命令:
当我的'no'达到'999999 + 1'时出现问题。 – hsz 2009-12-10 11:13:05
您可以使用CASE
语句来调整排序。
为什么不只是“ORDER BY ISNULL(no),no;”?如果为空,则ISNULL已经返回1,否则返回0。 – OMA 2014-05-22 11:49:56
是的,应该是我纠正! – YOU 2014-05-24 10:36:58