使用 MySQL 中同一个表的 COUNT 连接两个查询

发布于 2024-11-14 11:16:21 字数 524 浏览 5 评论 0原文

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

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

也许需要完整的外部连接?

在 MySQL 中执行此操作的最佳方法是什么?

I have two queries that I run in the same table:

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

And

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

I tried something like this but doesn't work

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

Maybe a need a FULL OUTER JOIN?

What's the best way to do this in MySQL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若言繁花未落 2024-11-21 11:16:21
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
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
鹤仙姿 2024-11-21 11:16:21
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 
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 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文