Mal*_*eir 1 mysql sql join group-by
我正在努力让这个查询正确.我有返回的表来显示昵称和两个相关的值.表是:用户(昵称,名称等)postsAuth(昵称,postID等)postComm(昵称,comID等)
我试图让它不包括用户如果numPosts和numComments中返回的值都为NULL(例如,如果他们没有评论或创建帖子).我不确定如何让这个工作.代码如下
SELECT u.nickname, pa.numPosts, pc.numComments
FROM Users u
LEFT JOIN
(SELECT pa.nickname, COUNT(pa.nickname) AS numPosts
FROM postAuthors pa
GROUP BY pa.nickname
)pa
ON u.nickname = pa.nickname LEFT JOIN
(SELECT pc.nickname, COUNT(pc.nickname) AS numComments
FROM postComments pc
GROUP BY pc.nickname
)pc
ON u.nickname = pc.nickname;
Run Code Online (Sandbox Code Playgroud)
这创造了
Nickname | numPosts | numComments
bob 1 2
sally 2 1
tommy NULL NULL
etc.......
Run Code Online (Sandbox Code Playgroud)
我不想tommy被展示.
只需添加WHERE pc.nickname IS NOT NULL OR pa.nickname IS NOT NULL到查询即
SELECT u.nickname, pa.numPosts, pc.numComments
FROM Users u
LEFT JOIN
(SELECT pa.nickname, COUNT(pa.nickname) AS numPosts
FROM postAuthors pa
GROUP BY pa.nickname
)pa
ON u.nickname = pa.nickname LEFT JOIN
(SELECT pc.nickname, COUNT(pc.nickname) AS numComments
FROM postComments pc
GROUP BY pc.nickname
)pc
ON u.nickname = pc.nickname
WHERE pc.nickname IS NOT NULL OR pa.nickname IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
这将排除在postAuthors和postComments中都没有值的任何用户.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |