原文地址 https://stackoverflow.com/questions/12101191/group-concat-return-null-if-any-value-is-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;
得到的结果是
1 a,b
2 c
3 e
题主想要得到这样的
1 a,b
2 null
3 e
评论区有两种方法
SELECT a, IF(COUNT(b) = COUNT(*), GROUP_CONCAT(b), NULL) AS bs
FROM gc
GROUP BY a;
SELECT a, IF(SUM(b IS NULL) = 0, GROUP_CONCAT(b), NULL) AS bs
FROM gc
GROUP BY a;
关于开销部分,回答者的猜测更多的可能是在GROUP_CONCAT本身,而不是前面。未测试。
在此学习此种数据的处理思路。