Mysql group_concat不为null或空单元格友好

时间:2015-01-27 12:16:35

标签: mysql group-concat

当我输入以下sql查询时:

SELECT  G.GROUP_ID "GROUP_ID",  
        G.GROUP_NAME "GROUP_NAME", 
        IF (GF.GENDER IS NULL || GF.GENDER = "" , "NONE", GF.GENDER) "GENDER", 
        IF (GF.AGE_FROM IS NULL || GF.AGE_FROM = "" , "NONE", GF.AGE_FROM) "AGE_FROM", 
        IF (GF.AGE_TO IS NULL || GF.AGE_TO = "" , "NONE", GF.AGE_TO) "AGE_TO", 
        IF (GF.MOBILE_EXIST IS NULL || GF.MOBILE_EXIST = "" , "NONE", GF.MOBILE_EXIST) "MOBILE_EXIST",
        IF (CR.COUNTRY_NAME IS NULL || CR.COUNTRY_NAME = "" , "NONE", CR.COUNTRY_NAME) "COUNTRY_NAME",        
        IF (CSR.STATE_NAME IS NULL || CSR.STATE_NAME = "" , "NONE", CSR.STATE_NAME) "STATE",        
        IF (GF.EMAIL_EXIST IS NULL || GF.EMAIL_EXIST = "" , "NONE", GF.EMAIL_EXIST) "EMAIL_EXIST",       
        IF (GF.INCLUDE_BUYER_ID IS NULL || GF.INCLUDE_BUYER_ID = "" , "NONE", GF.INCLUDE_BUYER_ID) "INCLUDE_BUYER",
        IF (GF.EXCLUDE_BUYER_ID IS NULL || GF.EXCLUDE_BUYER_ID = "" , "NONE", GF.EXCLUDE_BUYER_ID) "EXCLUDE_BUYER"
FROM MOB_GROUP G
LEFT OUTER JOIN MOB_GROUP_FORMULA GF
ON (G.GROUP_ID = GF.GROUP_ID)
LEFT OUTER JOIN MOB_COUNTRY_REF CR
ON (GF.COUNTRY = CR.COUNTRY_ID)
LEFT OUTER JOIN MOB_COUNTRY_STATE_REF CSR
ON (CR.COUNTRY_ID = CSR.COUNTRY_ID)

它返回所有结果,包括具有null或空单元格的行。

但是,当我输入时:

SELECT  G.GROUP_ID "GROUP_ID",  
        G.GROUP_NAME "GROUP_NAME", 
        IF (GF.GENDER IS NULL || GF.GENDER = "" , "NONE", GF.GENDER) "GENDER", 
        IF (GF.AGE_FROM IS NULL || GF.AGE_FROM = "" , "NONE", GF.AGE_FROM) "AGE_FROM", 
        IF (GF.AGE_TO IS NULL || GF.AGE_TO = "" , "NONE", GF.AGE_TO) "AGE_TO", 
        IF (GF.MOBILE_EXIST IS NULL || GF.MOBILE_EXIST = "" , "NONE", GF.MOBILE_EXIST) "MOBILE_EXIST",
        IF (CR.COUNTRY_NAME IS NULL || CR.COUNTRY_NAME = "" , "NONE", CR.COUNTRY_NAME) "COUNTRY_NAME",        
        IF (CSR.STATE_NAME IS NULL || CSR.STATE_NAME = "" , "NONE", GROUP_CONCAT(CSR.STATE_NAME)) "STATE",        
        IF (GF.EMAIL_EXIST IS NULL || GF.EMAIL_EXIST = "" , "NONE", GF.EMAIL_EXIST) "EMAIL_EXIST",       
        IF (GF.INCLUDE_BUYER_ID IS NULL || GF.INCLUDE_BUYER_ID = "" , "NONE", GF.INCLUDE_BUYER_ID) "INCLUDE_BUYER",
        IF (GF.EXCLUDE_BUYER_ID IS NULL || GF.EXCLUDE_BUYER_ID = "" , "NONE", GF.EXCLUDE_BUYER_ID) "EXCLUDE_BUYER"
FROM MOB_GROUP G
LEFT OUTER JOIN MOB_GROUP_FORMULA GF
ON (G.GROUP_ID = GF.GROUP_ID)
LEFT OUTER JOIN MOB_COUNTRY_REF CR
ON (GF.COUNTRY = CR.COUNTRY_ID)
LEFT OUTER JOIN MOB_COUNTRY_STATE_REF CSR
ON (CR.COUNTRY_ID = CSR.COUNTRY_ID)

它只显示一行并且缺少包含null或空单元格的另一行。

链接:

http://sqlfiddle.com/#!2/f0b98/1

0 个答案:

没有答案