我有一個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