我正在尝试编写生成以下输出的 SQL 语句。
我有以下两个表:
用户电影
userID | movieID
-----------------
135 | k0jps
135 | p1zka
125 | v0t67
115 | opp2s
111 | xnwri
115 | kspdl
关注
followerid | followingid
------------------------
122 | 135
192 | 111
125 | 240
120 | 125
45 | 111
我想获取 UserMovie 表中每个用户的关注者数量,结果如下:
结果
userid | followerCount
----------------------
135 | 1
125 | 1
115 | 0
111 | 2
下面的语句部分地给出了我想要的:
SELECT followingid, count(*) as followerCount
FROM Follows
WHERE followingid in (SELECT DISTINCT userID FROM UserMovie)
GROUP BY followingid
上述查询的问题是具有 0 个关注者的用户不会出现在给出以下输出的结果中:
userid | followerCount
----------------------
135 | 1
125 | 1
111 | 2
知道怎么做吗?
最佳答案
试试这个来包括没有以下内容的用户:
SELECT UserId, Count(followerid) AS followerCount
FROM (SELECT DISTINCT userId FROM UserMovie ) m
LEFT JOIN Follows f
ON f.followingid = m.userID
GROUP BY UserId
现在它生成:
UserId followerCount
111 2
115 0
125 1
135 1
关于mysql - 产生以下输出的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30428707/