繁体   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