gpt4 book ai didi

mysql - 无法弄清楚我的 GROUP_CONCAT 有什么问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:18 24 4
gpt4 key购买 nike

我有以下两个表:

 Table `Products`
ProductId (INT) PrimaryKey
Name (VARCHAR(25))
Description (VARCHAR(255))

Table `Images`
ImageId (INT) PrimaryKey
ImagePath (VARCHAR(255))
ImageDescription (VARCHAR(255))
products_ProductId (INT)

Images 表包含与特定产品关联的图像。它与 Products 表是一对多关系,因此一个 Product 可以有多个 Images。唯一可以为空的列(目前大多数情况下都是)是 Images.ImageDescription。我想选择一个产品列表,并在同一个查询中也获取它们的所有图像。我写了以下查询:

SELECT P.*, 
GROUP_CONCAT(DISTINCT CONCAT(I.ImagePath, '@', I.ImageDescription) SEPARATOR ',') AS _ProductImages
FROM (SELECT * FROM Products WHERE ProductId IN (1,2,3,4,5,6,7)) as P
LEFT JOIN Images as I ON I.products_ProductId = P.ProductId
GROUP BY P.ProductId

所有选定的产品在图像表中至少有 1 个关联行,前 3 个在图像表中有 3 个关联行,但是,当查询运行并返回时,_ProductImages 在每一行中都是 NULL。有人可以指出我做错了什么吗?

最佳答案

除了 Thorsten 的回答:

除了 CONCAT(),您还可以使用 CONCAT_WS()。了解更多信息 here .

它适用于 NULL 值并省略不必要的分隔符。

例子:

mysql > select concat('whatever', '@', NULL);
+-------------------------------+
| concat('whatever', '@', NULL) |
+-------------------------------+
| NULL |
+-------------------------------+
1 row in set (0.00 sec)

mysql > select concat_ws('@', 'whatever', NULL);
+----------------------------------+
| concat_ws('@', 'whatever', NULL) |
+----------------------------------+
| whatever |
+----------------------------------+
1 row in set (0.00 sec)

mysql > select concat_ws('@', 'whatever', 'whatever');
+----------------------------------------+
| concat_ws('@', 'whatever', 'whatever') |
+----------------------------------------+
| whatever@whatever |
+----------------------------------------+
1 row in set (0.00 sec)

通过 Thorsten 的回答,您将得到:

mysql > select concat('whatever', '@', COALESCE(NULL, ''));
+---------------------------------------------+
| concat('whatever', '@', COALESCE(NULL, '')) |
+---------------------------------------------+
| whatever@ |
+---------------------------------------------+
1 row in set (0.00 sec)

关于mysql - 无法弄清楚我的 GROUP_CONCAT 有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43253844/

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