如果任何列为 NULL
,我如何让 GROUPT_CONCAT
返回 NULL
?
这是一个测试表:
CREATE TABLE gc (
a INT(11) NOT NULL,
b VARCHAR(1) DEFAULT NULL
);
INSERT INTO gc (a, b) VALUES
(1, 'a'),
(1, 'b'),
(2, 'c'),
(2, NULL),
(3, 'e');
我的查询:
SELECT a, GROUP_CONCAT(b)
FROM gc
GROUP BY a;
这是我得到的:
a | GROUP_CONCAT(b)
--+----------------
1 | a,b
2 | c
3 | e
这就是我想要的:
a | GROUP_CONCAT(b)
--+----------------
1 | a,b
2 | NULL
3 | e
最佳答案
在 IF
表达式中检查组中是否有任何值是 NULL。我可以想到几种方法:
1) 计算非空值并将其与组中的行数进行比较:
SELECT a, IF(COUNT(b) = COUNT(*), GROUP_CONCAT(b), NULL) AS bs
FROM gc
GROUP BY a
在线查看它:sqlfiddle
2) 使用SUM
计算空值的数量:
SELECT a, IF(SUM(b IS NULL) = 0, GROUP_CONCAT(b), NULL) AS bs
FROM gc
GROUP BY a
在线查看它:sqlfiddle
关于mysql - 如果任何值为 NULL,GROUP_CONCAT 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101191/