[英]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但它返回零结果。
返回第一个非
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.