mysql - 产生以下输出的 SQL 查询?

标签 mysql sql relational-database

我正在尝试编写生成以下输出的 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/

相关文章:

mysql - 从链接表中获取论坛主题信息中的用户名

mysql - SQL 查询从嵌入代码中获取 youtube id

javascript - 通过一个术语搜索整个表

java - 使用 Hibernate 从 SQL 查询创建表

mysql - 用另一个表的数据更新 MySQL 大表

mysql - 设计一个数据库来处理产品变化的库存跟踪

java - 使用Java代码启动XAMPP mysql服务器

mysql - 查找组中 2 个小数项小于 2 的条目

mysql - 在SQL select语句中,为什么使用 "1 order by "或 "order by 1"?

MYSQL 选择另一个表中出现的多个 id 的计数