是否可以选择让MySQL的Group_Concat函数包含空值?
从我的源表中考虑以下示例:
userId, questionId, selectionId
7, 3, NULL
7, 4, 1
7, 5, 2
当我使用GROUP_CONCAT查询选择表时,我得到以下内容:
7, 4=1,5=2
我想得到以下内容:
7, 3=NULL,4=1,5=2
供参考,我的查询如下:
Select userId, GROUP_CONCAT(CONCAT(questionId, '=', selectionId))
From selection
Group by userId;
我也试过像这样添加一个IFNULL:
Select userId, GROUP_CONCAT(IFNULL(CONCAT(questionId, '=', selectionId), 'NULL'))
From selection
Group by userId;
但是产生了以下内容:
7, NULL,4=1,5=2
注意 - 还有一个我忘了包含的复杂性。 selectionId是另一个表的外键。我使用左外连接到selection_text表。我的真实查询包括该表中的字段(这些字段解析为NULL,因为selectionId为null)。
答案 0 :(得分:32)
您应该IFNULL
可以是NULL
;
SELECT userId, GROUP_CONCAT(CONCAT(questionId, '=',
IFNULL(selectionId, 'NULL')))
FROM selection
GROUP BY userId;
演示here。
答案 1 :(得分:2)
您应直接在IFNULL
值上使用COALESCE
或selectionId
:
SELECT
userId,
GROUP_CONCAT(CONCAT(questionId, '=', COALESCE(selectionId, 'NULL')))
FROM selection
GROUP BY userId;