天天看点

MySQL中函数GROUP_CONCAT的null返回处理

原文地址 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本身,而不是前面。未测试。

在此学习此种数据的处理思路。