35

是否可以选择让 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 为空)。

4

2 回答 2

53

您应该只是IFNULL可以的列NULL

SELECT userId, GROUP_CONCAT(CONCAT(questionId, '=', 
                 IFNULL(selectionId, 'NULL')))
FROM selection
GROUP BY userId;

演示在这里

于 2012-04-26T15:02:21.833 回答
5

您应该直接在值上使用IFNULLor :COALESCEselectionId

SELECT
  userId,
  GROUP_CONCAT(CONCAT(questionId, '=', COALESCE(selectionId, 'NULL')))
FROM selection
GROUP BY userId;
于 2012-04-26T15:01:03.873 回答