这是我的问题。我有 3 张 table ,例如
AUTHORS
id (INT, PRIMARY KEY)
name (VARCHAR)
WRITINGS
id (INT, PRIMARY KEY)
content (TEXT)
author_id (INT, FOREIGN KEY)
COMMENTS
id (INT)
commentary (TEXT)
author_id (INT, FOREIGN KEY)
我知道如何通过以下请求来计算每个用户有多少文章或评论:
SELECT A.id, A.name, COUNT(W.id)
FROM AUTHORS AS A
LEFT JOIN WRITINGS AS W
ON A.id = W.author_id
GROUP BY A.id;
SELECT A.id, A.name, COUNT(C.id)
FROM AUTHORS AS A
LEFT JOIN COMMENTS AS C.author_id
ON A.id = C.author_id
GROUP BY A.id;
但是有没有办法在一个唯一的请求中获取这两个计数(写作和评论)?
其他挑战:同样的问题,但没有嵌套请求。
提前致谢
最佳答案
将其中一个查询放入子查询中,并将其与其他查询连接起来。
SELECT A.id, A.name, IFNULL(COUNT(W.id), 0) AS writing_count, IFNULL(C.comment_count, 0) AS comment_count
FROM AUTHORS AS A
LEFT JOIN WRITINGS AS W
ON A.id = W.author_id
LEFT JOIN (
SELECT author_id, COUNT(*) AS comment_count
FROM COMMENTS
GROUP BY author_id) AS C
ON A.id = C.author_id
GROUP BY A.id
关于mysql - 对 3 个表的请求进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39418565/