提问者:小点点

MySQL GROUP_CONCAT(DISTINCT…)忽略数据


我正在使用group_concat将存储邮政地址的表的多行和多列连接起来。

我的表看起来是这样的(简化的):

id | street  | hNumber
-----------------------
1  | streetA | 1       
-----------------------
2  | streetB | 2      
-----------------------
3  | streetC | NULL    
-----------------------

在某些情况下,我需要连接地址,我这样做:group_concat(DISTINCT table.street,'',table.hnumber SEPARATOR',')as street

例如,这会给我Streeta1,Streetb2的结果,这正是我想要的。 遗憾的是,该方法不适用于例如hNumber为空的情况,在这些情况下,它只是将street返回为null。 对于hNumber表单元格为空的行,我希望它跳过空字段并将street返回为streeta1,streetc。

我希望有人能给我一个正确处理这个问题的方向。


共1个答案

匿名用户

MySQL会跳过任何包含空值的行。 简短的答案是预测一个列可能的空值,并为此做好准备。 例如:

选择GROUP_CONCAT(DISTINCT`street`,‘’,IFNULL(`hnumber`,“”)SEPARATOR',')

(如果hNumber为空,则创建空字符串)