Mysql - 分组后连接两个表

标签 mysql sql select join group-by

我有两个表,结构如下:

Table - a
datetime            | camapgin_id | country | unique_id
2013-12-23 10:23:59 |     123     |    US   |  5475642385763


Table - b
datetime            | camapgin_id | country | unique_id
2013-12-23 10:40:35 |     123     |    US   |  5475642385763

我想要一个查询来生成如下表:

Table - joined
day        | camapgin_id | country | count(1) from a | count(1) from b
2013-12-23 |     123     |    US   |       100       |      82

我可以像这样用自己的查询生成每个表:

SELECT date_format(datetime, '%Y-%m-%d') AS day, campaign_id, country, count(1)
FROM a
GROUP BY day, campaign_id, country

表 b 也是如此,但这让我得到了两个不同的表。

如何通过与我发布的查询相同的 group by 连接两个表?

最佳答案

试试这个:

SELECT DATE_FORMAT(A.day, '%Y-%m-%d') AS day, A.campaign_id, A.country, MAX(tableACount), MAX(tableBCount)
FROM (SELECT DATE(datetime) AS day, campaign_id, country, COUNT(1) tableACount
      FROM a GROUP BY day, campaign_id, country
     ) AS A
INNER JOIN (SELECT DATE(datetime) AS day, campaign_id, country, COUNT(1) tableBCount
            FROM b GROUP BY day, campaign_id, country
           ) AS B ON A.day = B.day AND A.campaign_id = B.campaign_id AND A.country = B.country
GROUP BY A.day, A.campaign_id, A.country

编辑::

SELECT DATE_FORMAT(A.day, '%Y-%m-%d') AS DAY, A.campaign_id, A.country, MAX(tableACount), MAX(tableBCount)
FROM (SELECT DATE(DATETIME) AS DAY, campaign_id, country, COUNT(1) tableACount, 0 AS tableBCount
      FROM a GROUP BY DAY, campaign_id, country
      UNION 
      SELECT DATE(DATETIME) AS DAY, campaign_id, country, 0 AS tableACount, COUNT(1) tableBCount
      FROM b GROUP BY DAY, campaign_id, country
     ) AS A
GROUP BY A.day, A.campaign_id, A.country

关于Mysql - 分组后连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20770991/

相关文章:

mysql - 如何创建接受参数的存储过程

mysql - 按一个字段分组,然后按另一字段对结果分组

xml - 如何选择包含@符号(at符号)的属性

mysql - sql : select uppercase columns in database

mysql - 选择 employeeId 为空且不为空的所有部门?

mysql - mysql 查询从另一个表获取数据时出现更新错误

php - 将具有动态数量值的数组插入数据库

mysql - 比较MySQL中一个表中连续的两行数据

mysql - DATEDIFF 和自己做减法有什么区别

javascript - 使用动态生成的对象数组填充 ember-power-select 时,无法将对象转换为 Array.toString( native )的原始值