sql - 如何创建一个 MySQL JOIN 查询,只选择一个表中的行,而另一个表中存在对该行的一定数量的引用?

标签 sql mysql

我的数据库中有两个表,名为ratingsmovies

评分:

| id | movie_id | rating |

电影:

| id | title |

典型的电影记录可能是这样的:

| 4 | Cloverfield (2008) |

而且 Cloverfield 可能有多个评分记录,如下所示:

| 21 | 4 | 3 | (rating number 21, on movie number 4, giving it a rating of 3)

| 22 | 4 | 2 | (rating number 22, on movie number 4, giving it a rating of 2)

| 23 | 4 | 5 | (rating number 23k on movie number 4, giving it a rating of 5)

问题:

如何创建 JOIN 查询以仅选择电影表中评级表中评级数超过 x 的行?例如,在上面的示例中,如果 Cloverfield 在评分表中只有一个评分,并且 x 为 2,则不会被选中。

感谢您的帮助或建议!

最佳答案

使用 HAVING 子句。沿着这些线的东西:

SELECT movies.id, movies.title, COUNT(ratings.id) AS num_ratings 
  FROM movies 
  LEFT JOIN ratings ON ratings.movie_id=movies.id 
  GROUP BY movies.id 
  HAVING num_ratings > 5;

关于sql - 如何创建一个 MySQL JOIN 查询,只选择一个表中的行,而另一个表中存在对该行的一定数量的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/175733/

相关文章:

sql - 如何使用 Hive 以分钟为单位获取日期差异

sql - ORACLE SQL - 如何找到每位教师在教师辞职前 2 个月每天的减免次数?

SQL 数组作为准备语句的参数 - 可移植性

MySQL - TIMESTAMP(3) 的默认值

python - SQLAlchemy - 简单的选择语句

sql-生成64位的随机整数

mysql - 什么是 MS Access LAST() 的 MySQL 等效项?

mysql - 按最大计数(字段)过滤结果

mysql - 对数据库的故障转移支持

php - 自动将外键插入表的简单方法