gpt4 book ai didi

MySQL连接两个表并将多行合并为一个

转载 作者:行者123 更新时间:2023-11-29 01:35:39 25 4
gpt4 key购买 nike

我有 2 个表:

sms_recipients

campaign_id | message | user_id | contact_number | status
.........................................................
1 something 12334 078237812719 1
1 something 12123 071231231232 1
2 other 12124 078123123126 0
2 other 12334 078234234212 0
2 other 42124 078124124415 1

短信营销事件

campaign_id | shop_id| campaign_type
.....................................
1 1123 marketing
2 2123 awareness
3 3231 something else
4 4432 bla bla
5 5244 last

campaign_id 对于 sms_campaign 表是唯一的,有多个 user_id 与相同的 campaign_id message 对于所有唯一的 champagne_id

都是一样的

我想将它们组合起来,以便具有 status = 0 的相同 campaign_id 的每个 contact_number 都出现在单个行和列中,例如这个:

campaign_id | shop_id| campaign_type | users_mobile_numbers      | message
..........................................................................
1 1123 marketing something
2 2123 awareness 078123123126,078234234212 other
3 3231 something else
4 4432 078234234212
5 5244 078124124415

到目前为止,这是我的查询:

SELECT c.campaign_id, 
shop_id,
campaign_type,
contact_number AS users_mobile_numbers,
message FROM sms_campaign c
LEFT JOIN sms_recipients r
ON u.campaign_id = c.campaign_id
WHERE status = 0

最佳答案

LEFT JOIN 中,您需要将过滤器 status = 0 移动到连接条件中,或者如果您将过滤器留在 WHERE 子句中,则status = 0 OR status IS NULL 以避免过滤掉根本没有消息的事件 - 我已经完成了第一个选项。

根据评论,您需要按事件列GROUP 数据,并将聚合函数应用于所有未分组的列,以保证每组只有一行 - GROUP_CONCAT 将连接每个 GROUP 中的所有文本值。我任意使用 MIN 来解析 shopmessage 的值,但您可能需要进行其他调整。 (如果需要,您也可以在 GROUP CONCAT 中执行 DISTINCT)。

SELECT 
c.campaign_id,
MIN(shop_id) AS shop_id,
campaign_type,
GROUP_CONCAT(contact_number) AS users_mobile_numbers,
MIN(message) AS message
FROM sms_campaign c
LEFT JOIN sms_recipients r
ON u.campaign_id = c.campaign_id AND status = 0
GROUP BY c.campaign_id, campaign_type;

关于MySQL连接两个表并将多行合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47437394/

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