有没有一个选项可以让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)。
发布于 2012-04-26 23:02:22
您应该只对可以为NULL
的列执行IFNULL
;
SELECT userId, GROUP_CONCAT(CONCAT(questionId, '=',
IFNULL(selectionId, 'NULL')))
FROM selection
GROUP BY userId;
演示here。
发布于 2012-04-26 23:01:04
您应该直接对selectionId
值使用IFNULL
或COALESCE
:
SELECT
userId,
GROUP_CONCAT(CONCAT(questionId, '=', COALESCE(selectionId, 'NULL')))
FROM selection
GROUP BY userId;
https://stackoverflow.com/questions/10336022
复制相似问题