6

いずれかの列が含まれている場合、どうすれば返品GROUPT_CONCATできますか?NULLNULL

テストテーブルは次のとおりです。

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
4

1 に答える 1

5

IF式で、グループ内の値がNULLであるかどうかを確認します。私はそれを行うためのいくつかの方法を考えることができます:

1)null以外の値をカウントし、グループ内の行数と比較します。

SELECT a, IF(COUNT(b) = COUNT(*), GROUP_CONCAT(b), NULL) AS bs
FROM gc
GROUP BY a

オンラインで動作することを確認してください:sqlfiddle

SUM2) :を使用してnull値の数をカウントします。

SELECT a, IF(SUM(b IS NULL) = 0, GROUP_CONCAT(b), NULL) AS bs
FROM gc
GROUP BY a

オンラインで動作することを確認してください:sqlfiddle

于 2012-08-23T23:06:40.993 に答える