簡體   English   中英

MySQL:如何按兩列或更多列排序,NULL的值將是最后一個?

[英]MySQL : How to order by two or more columns and the NULL's value will be last?

如果第一列為null但第二列不為null等,則嘗試排序列名稱首先不為null。

表:

id  name1 name2  name3
1.   a     b      
2.   a1            c
3.         b1      c1
4.                 c2
5.                 c3
6.   a2    
7.         b2      c4
8.   a3

預期結果

id 
1 
2
6
8
3
7
4
5   

我曾嘗試使用COALESCE和IFNULL但它返回零結果。

COALESCE( value ,...)

返回第一個非NULL列表值,或NULL如果沒有非NULL值。

 mysql> SELECT COALESCE(NULL,1); -> 1 mysql> SELECT COALESCE(NULL,NULL,NULL); -> NULL 

IS NULL

測試值是否為NULL

 mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL; -> 0, 0, 1 

因此:

SELECT   id
FROM     Table1
ORDER BY COALESCE(name1, name2, name3) IS NULL,
         COALESCE(name1, name2, name3)

sqlfiddle上看到它。

這首先排序在所有三個列是NULL那些將有IS NULL之一,它會來找那些為零的結果的結果); 然后是第一個非NULL列的實際值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM