mysql:如何使用groupconcat追加空值,使用groupby追加分隔符?

thigvfpy  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(452)

如何使用组concat和分隔符显示空值

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;

它为fa返回以下值

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

我希望它显示空值,即

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

如何同时使用组concat和分隔符来实现相同的效果

ddarikpa

ddarikpa1#

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;

注解:默认情况下,groupconcat以“,”分隔字段,因此,如果您愿意,可以省略它,ifnull(column,'default\utext'),这将替换所有null值​​默认情况下选择一个。

mw3dktmi

mw3dktmi2#

试着换掉那些 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'` ,所以上述建议应该有效。
注意,我还用显式连接替换了旧样式的连接。此外,还应选择用于聚合的同一列。

相关问题