两张table purchase
以及 sales
的列 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
但第二列仍然显示null,尽管它有值。如果我搬家 sales.date
在第一个位置,它显示值。
这是小提琴。 date
显示值,因为sales.date位于第一位, date1
返回空,因为 sales.date
在第二个位置。
sql小提琴
2条答案
按热度按时间a7qyws3x1#
这并不是您希望它做的:
GROUP_CONCAT(purchase.date, ',', sales.date) AS date
GROUP_CONCAT(CONCAT_WS(',', sales.date, purchase.date))
hs1rzwqc2#
我不确定只是
COALESCE
这就足够了,正如@timbiegeleisen所说-COALESCE
始终返回其列表中的第一个非空值。所以我申请了CASE
条件