【问题标题】:Join two queries with COUNT from the same table in MySQL使用 MySQL 中同一个表中的 COUNT 连接两个查询
【发布时间】:2011-09-11 21:26:14
【问题描述】:

我在同一个表中运行了两个查询:

SELECT id, COUNT(up) 
FROM comentarios 
WHERE up = 1
GROUP BY id

SELECT id, COUNT(down) 
FROM comentarios 
WHERE down = 2
GROUP BY id

我尝试了类似的方法但不起作用

SELECT t1.id, COUNT(t1.up), t2.id, COUNT(t2.down)
FROM (SELECT id, up FROM comentarios WHERE up = 1 GROUP BY id) t1
JOIN (SELECT id, down FROM comentarios WHERE down = 2 GROUP BY id) t2

ON t1.id = t2.id

也许需要 FULL OUTER JOIN?

在 MySQL 中最好的方法是什么?

【问题讨论】:

  • 您的预期输出是什么?你试过联合查询吗?

标签: mysql join count outer-join


【解决方案1】:
SELECT id,
       SUM(CASE WHEN up = 1 THEN 1 ELSE 0 END) AS UpCount,
       SUM(CASE WHEN down = 2 THEN 1 ELSE 0 END) AS DownCount
    FROM comentarios
    GROUP BY id

【讨论】:

    【解决方案2】:
    select id, 
        sum(case when up = 1 then 1 end) as UpCount,
        sum(case when down = 2 then 1 end) as DownCount
    from comentarios  
    group by id 
    

    【讨论】:

    • 哇,这对我来说太快了,而且是新的。结果是正确的,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-11-07
    • 2020-06-23
    • 2018-08-03
    • 2018-08-31
    • 2014-08-17
    • 2016-04-12
    • 1970-01-01
    • 2011-02-13
    相关资源
    最近更新 更多