【问题标题】:MySQL Group concat line separatorMySQL 组连接行分隔符
【发布时间】: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 行分隔符的任何语法。这个问题还有其他解决方案吗?任何帮助表示赞赏。

【问题讨论】:

    标签: mysql group-by 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 分成两行?
      • 我想计算每个子广告在广告系列一级的总点击次数和观看次数
      猜你喜欢
      • 2020-09-16
      • 2015-03-09
      • 2013-06-24
      • 1970-01-01
      • 2020-07-27
      • 2017-12-19
      • 2013-05-31
      • 2016-11-20
      • 1970-01-01
      相关资源
      最近更新 更多