В 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