gpt4 book ai didi

mysql - 连接表和计数的正确方法

转载 作者:行者123 更新时间:2023-11-29 00:36:01 25 4
gpt4 key购买 nike

假设我有 3 张 table 。它们被称为用户、线程、帖子。我需要知道有多少帖子和话题用户在一个 sql 行中创建。做这个的最好方式是什么?我会做类似以下的连接,这是正确的/最好的方法吗?但是我该如何计数呢?

SELECT *,
FROM users
LEFT JOIN threads on threads.user_id=users.user_id
LEFT JOIN posts on posts.user_id=users.user_id
WHERE user_id='1'

最佳答案

您可以使用类似这样的应用和聚合函数来获取总计数:

SELECT u.user_id, 
coalesce(TotalThreads, 0) + coalesce(TotalPosts, 0) Total
FROM users u
LEFT JOIN
(
select user_id, count(thread_id) TotalThreads
from threads
group by user_id
) t
on t.user_id=u.user_id
LEFT JOIN
(
select user_id, count(post_id) TotalPosts
from posts
group by user_id
) p
on p.user_id=u.user_id
WHERE u.user_id='1'

如果您希望值分开,则:

SELECT u.user_id, 
coalesce(TotalThreads, 0) TotalThreads,
coalesce(TotalPosts, 0) TotalPosts
FROM users u
LEFT JOIN
(
select user_id, count(thread_id) TotalThreads
from threads
group by user_id
) t
on t.user_id=u.user_id
LEFT JOIN
(
select user_id, count(post_id) TotalPosts
from posts
group by user_id
) p
on p.user_id=u.user_id
WHERE u.user_id='1'

关于mysql - 连接表和计数的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14275892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com