首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >包含空值的MySQL GROUP_CONCAT

包含空值的MySQL GROUP_CONCAT
EN

Stack Overflow用户
提问于 2012-04-26 22:56:49
回答 2查看 35.2K关注 0票数 34

有没有一个选项可以让MySQL的Group_Concat函数包含空值?

考虑我的源表中的以下示例:

代码语言:javascript
复制
userId, questionId, selectionId
7, 3, NULL
7, 4, 1
7, 5, 2

当我用GROUP_CONCAT查询选择表时,我得到了以下结果:

代码语言:javascript
复制
7, 4=1,5=2

我想要得到以下几点:

代码语言:javascript
复制
7, 3=NULL,4=1,5=2

作为参考,我的查询如下所示:

代码语言:javascript
复制
Select userId, GROUP_CONCAT(CONCAT(questionId, '=', selectionId))
From selection
Group by userId;

我还尝试添加一个IFNULL,如下所示:

代码语言:javascript
复制
Select userId, GROUP_CONCAT(IFNULL(CONCAT(questionId, '=', selectionId), 'NULL'))
From selection
Group by userId;

但这产生了以下结果:

代码语言:javascript
复制
7, NULL,4=1,5=2

注意--还有一个我忘了包括在内的复杂性。selectionId是另一个表的外键。我对selection_text表使用了一个左外部联接。我的实际查询包括该表中的字段(这些字段解析为NULL,因为selectionId为null)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-26 23:02:22

您应该只对可以为NULL的列执行IFNULL

代码语言:javascript
复制
SELECT userId, GROUP_CONCAT(CONCAT(questionId, '=', 
                 IFNULL(selectionId, 'NULL')))
FROM selection
GROUP BY userId;

演示here

票数 52
EN

Stack Overflow用户

发布于 2012-04-26 23:01:04

您应该直接对selectionId值使用IFNULLCOALESCE

代码语言:javascript
复制
SELECT
  userId,
  GROUP_CONCAT(CONCAT(questionId, '=', COALESCE(selectionId, 'NULL')))
FROM selection
GROUP BY userId;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10336022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档