gpt4 book ai didi

mysql - 将多个子行组合成一行MYSQL,无需硬编码或最小/最大值

转载 作者:行者123 更新时间:2023-11-29 21:13:20 32 4
gpt4 key购买 nike

我确实研究了这个问题(Combine Multiple child rows into one row MYSQL),但没有一个与我的相同。我需要一个解决方案,但我没有任何条件。我看到了数据透视表示例,但它们都使用条件或硬编码,例如如下所示:

GROUP_CONCAT(if(colID = 1, value, NULL))
OR
Round(Sum(If( Month(o.orderdate)= 1, (d.unitprice*d.quantity)-d.discount, 0 )), 2 ) AS Jan,

它们都使用 id 值的最大/最小、串联或硬编码。就我而言,ID 是根据 where 子句中的另一个 id 从 SQL 查询中检索的。每个广告商 ID 可以有 0 个图像或 10 个图像。请参阅下图,了解我想要实现的目标。如果有人觉得它是重复的,请指出我正确的答案?

Image of table and select

基本上,我有 3 个表,我正在将其连接到 1 个表中,并使用连接进行选择查询,我的 MySQL 如下:

select a.PK , a.Name, a.Email, i.Image_Name
FROM `advertiser` a
LEFT JOIN category c ON a.PK = c. FK
LEFT JOIN images I on a.PK = i.FK
where c.FK = 1

现在,我的结果是这样的:

PK      Name        Email               Image_name
31 Sprouts info@Sprout.co.za Sprouts.jpg
31 Sprouts info@Sprout.co.za Bananas.jpg
31 Sprouts info@Sprout.co.za Apples.jpg
31 Sprouts info@Sprout.co.za Lemos.jpg

我想要的是:

PK      Name        Email               Image_name_1        Image_name_2        Image_name_3        Image_name_4
31 Sprouts info@Sprout.co.za Sprouts.jpg Bananas.jpg Apples.jpg Lemos.jpg

每个 PK 的所有图像都位于一行。

任何帮助将不胜感激。

最佳答案

您可以使用以下查询-

SELECT a.PK , a.Name, a.Email, 
SUBSTRING_INDEX(GROUP_CONCAT(i.Image_Name),',',1) AS Image_name_1,
IF((LENGTH(GROUP_CONCAT(i.Image_Name)) - LENGTH(GROUP_CONCAT(i.Image_Name SEPARATOR ''))) < 1,'',SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(i.Image_Name),',',2),',',-1)) AS Image_name_2,
IF((LENGTH(GROUP_CONCAT(i.Image_Name)) - LENGTH(GROUP_CONCAT(i.Image_Name SEPARATOR ''))) < 2,'',SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(i.Image_Name),',',3),',',-1),',',-1)) AS Image_name_3,
IF((LENGTH(GROUP_CONCAT(i.Image_Name)) - LENGTH(GROUP_CONCAT(i.Image_Name SEPARATOR ''))) < 3,'',SUBSTRING_INDEX(GROUP_CONCAT(i.Image_Name),',',-1)) AS Image_name_4
FROM `advertiser` a
LEFT JOIN category c ON a.PK = c. FK
LEFT JOIN images I ON a.PK = i.FK
WHERE c.FK = 1
GROUP BY a.PK, a.Name,a.Email;

关于mysql - 将多个子行组合成一行MYSQL,无需硬编码或最小/最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177816/

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