MYSQL:如何使用 GROUP_CONCAT 附加 Null 值并使用 groupby 附加分隔符?

MYSQL: How to append Null value using GROUP_CONCAT and Separator using groupby?

如何使用 Group Concat 和 Separator 显示 Null

select sr.aID,
 GROUP_CONCAT(p.GENDER SEPARATOR ',') as Gender,
 GROUP_CONCAT(sr.FANS SEPARATOR ',') as FA,
from RELATION sr, Person p where RELATION _TYPE = 'FATHER'
and  sr.bID= p.ID group by sr.subjektA_ID;

它returns 以下是 FA

的值
1 | MALE, FEMALE | YES, NO
2 | FEMALE, MALE | NO, YES
3 | FEMALE, MALE | YES
4 | FEMALE, MALE | NO

我希望它显示 Null 值,即

3 | FEMALE, MALE | YES, NULL
4 | FEMALE, MALE | NULL, NO

如何同时使用 GROUP Concat 和 Separator 来实现同样的效果

尝试用字符串文字 'NULL':

替换那些 NULL
SELECT
    sr.aID,
    GROUP_CONCAT(p.GENDER) AS Gender,
    GROUP_CONCAT(COALESCE(sr.FANS, 'NULL')) AS FA
FROM RELATION sr
INNER JOIN Person p
    ON sr.bID = p.ID
WHERE
    RELATION _TYPE = 'FATHER'
GROUP BY
    sr.aID;

GROUP_CONCAT,像大多数聚合函数一样,忽略 NULL 值。但出于演示目的,您只想查看字符串 'NULL',因此上述建议应该有效。

请注意,我还用显式连接替换了您的旧式连接。此外,您应该 select 用于聚合的同一列。

select sr.aID,
 GROUP_CONCAT( IFNULL(p.GENDER, 'NULL') ) as Gender,
 GROUP_CONCAT( IFNULL(sr.FANS, 'NULL') ) as FA,
from RELATION sr, Person p where RELATION _TYPE = 'FATHER'
and  sr.bID= p.ID group by sr.subjektA_ID;

注解:GROUP_CONCAT默认用“,”分隔字段,所以,如果你喜欢可以省略它,IFNULL(列,'default_text'),这将替换所有空值使用您默认选择的一个。