gpt4 book ai didi

mysql - GROUP_CONCAT 中的多个 COALESCE - 如果只有第一列不为空,则显示值

转载 作者:行者123 更新时间:2023-11-29 09:54:45 26 4
gpt4 key购买 nike

两个表的 purchasesales 列的 date 列已连接为 date 行。

GROUP_CONCAT(purchase.date,',',sales.date) AS date

但根据数据输入,两者都可以为空。所以我连接为

GROUP_CONCAT(COALESCE(purchase.date,''),',',COALESCE(sales.date,''))AS date

这里,为什么如果 purchase.date 为空并且 sales.date 有值,sales.date 列也被提取为空?但在 purchase.date 的情况下,即使 sales.date 为空,也会显示值。

我的意思是我的代码不适用于GROUP_CONCAT的第二列。仅当第一列不为空时才显示第二列值。

我尝试过

GROUP_CONCAT(COALESCE(purchase.date,',',sales.date),'')AS date

GROUP_CONCAT(COALESCE(purchase.date,',',sales.date,'')AS date

但第二列仍然显示空,尽管它有值。如果我将 sales.date 移动到第一个位置,它就会显示值(value)。

这是 fiddle 。 date 显示值,因为 sales.date 位于第一个位置,date1 返回空,因为 sales.date 位于第二位置。

Sql Fiddle

最佳答案

这并没有达到您想要的效果:

COALESCE(sales.date, ',', purchase.date)

COALESCE() 返回三个值中非 NULL 的第一个,因此您永远不会得到 purchase.date:',' 永远不会 NULL

你基本上想要:

GROUP_CONCAT(purchase.date, ',', sales.date) AS date

但是,您已经了解到,CONCAT() - 甚至是这种隐式连接 - 如果任何值为 NULL,则返回 NULL >。一种解决方案是单独的COALESCE() - 正如您的答案所示。我无法重现你的问题。 Here是代码工作的示例。

或者,您可以使用CONCAT_WS()(尽管您错过了分隔符):

GROUP_CONCAT(CONCAT_WS(',', sales.date, purchase.date))

关于mysql - GROUP_CONCAT 中的多个 COALESCE - 如果只有第一列不为空,则显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54058807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com