MySQL 组连接行分隔符
Posted
技术标签:
【中文标题】MySQL 组连接行分隔符【英文标题】:MySQL Group concat line separator 【发布时间】:2018-09-15 21:13:04 【问题描述】:在我的 SQL 查询中,我加入了两个表 creatives 和 campaign,然后使用 group_concat。
下面是我的 SQL 查询:
SELECT group_concat(creatives.creative_id) AS creative_ids,
campaigns.id,creatives.creative_id, creatives.parentId, sum(creatives.views), sum(creatives.clicks)
FROM campaigns INNER JOIN creatives ON campaigns.id= creatives.parentId group by campaigns.id;
产生如下结果。您可以看到以逗号分隔的两个广告素材 ID:
我想将两个 creative_id 的结果分开如下:
我做了一些在线研究,但没有找到 GROUP_CONCAT 行分隔符的任何语法。这个问题还有其他解决方案吗?任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:SELECT creatives.creative_id AS creative_ids,
campaigns.id,creatives.creative_id, creatives.parentId, sum(creatives.views), sum(creatives.clicks)
FROM campaigns INNER JOIN creatives ON campaigns.id= creatives.parentId
group by campaigns.id;
【讨论】:
【参考方案2】:这个查询应该可以解决您的问题,因为我对它的理解更好。这个JOINs
将创意添加到一个子查询中,该子查询提供每个广告系列的总观看次数和点击次数。
SELECT creatives.creative_id AS creative_ids, ctotals.id, creatives.parentId, ctotals.views, ctotals.clicks
FROM creatives
JOIN (SELECT campaigns.id, campaigns.parentID, SUM(creatives.views) as views, SUM(creatives.clicks) as clicks
FROM creatives JOIN campaigns ON campaigns.id = creatives.parentId
GROUP BY campaigns.id) ctotals on ctotals.parentID = creatives.parentID
【讨论】:
嗨尼克,我试过你的查询。在这种情况下, sum(creatives.views) 和 sum(creatives.clicks) 不起作用。我收到了两条单独的广告 ID 记录,但 sum(addition) 没有发生。 嗨,Rose,你是对的,现在这将给出按 creative_id 和活动 ID 分组的 SUM(任何活动 ID 的行总和将添加到查询中的总数中)。为什么你希望两条线都有总和?或者,您为什么要将 creative_ids 分成两行? 我想计算每个子广告在广告系列一级的总点击次数和观看次数以上是关于MySQL 组连接行分隔符的主要内容,如果未能解决你的问题,请参考以下文章