【问题标题】:MySQL combine counts on columns from two tablesMySQL 对两个表中的列进行合并计数
【发布时间】:2020-10-07 16:58:14
【问题描述】:

有没有办法将这两个查询组合成一个 where table1.column1 = table2.column1 以便它返回以下内容?

select column1, count(column1) as var1 from table1 where  datediff(now(),createdAt) = 0 group by column1

select column1, count(column1) as var2 from table2 where  datediff(now(),createdAt) = 0 group by column1

column1, var1, var2
column1, var1, var2
column1, var1, var2
column1, var1, var2

【问题讨论】:

  • 你试过子查询和join吗?
  • 我尝试过但无法获得正确的语法,并且与 union 相同
  • select t1.column1, t1.var1, t2.var2 (select column1, count(column1) as var1 from table1 where datediff(now(),createdAt) = 0 group by column1) t1, ( select column1, count(column1) as var2 from table2 where datediff(now(),createdAt) = 0 group by column1) t2 where t1.column1= t2.column1

标签: mysql sql


【解决方案1】:

使用子查询和 INNER JOIN

SELECT 
    a.column1, a.var1, b.vae2
FROM
    (SELECT 
        column1, COUNT(column1) AS var1
    FROM
        table1
    WHERE
        DATEDIFF(NOW(), createdAt) = 0
    GROUP BY column1) a
        INNER JOIN
    (SELECT 
        column1, COUNT(column1) AS var2
    FROM
        table2
    WHERE
        DATEDIFF(NOW(), createdAt) = 0
    GROUP BY column1) b ON a.column1 = b.column1;

【讨论】:

  • 完美。谢谢
【解决方案2】:
SELECT *
FROM (
    select column1, count(column1) as var1 from table1 where  datediff(now(),createdAt) = 0 group by column1
) a 
JOIN (
    select column1, count(column1) as var2 from table2 where  datediff(now(),createdAt) = 0 group by column1
) b ON b.column1 = a.column1

【讨论】:

    猜你喜欢
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    相关资源
    最近更新 更多