【发布时间】:2020-05-21 15:15:06
【问题描述】:
我正在处理一个电影数据集,该数据集包含电影、流派表和 in_genre 桥接表。 以下查询尝试查找两部电影之间的共同类型。我做了两个连接来获取流派列表和一个相交来找到常见的流派。 有没有更有效的方法?
表架构:
- 电影:movie_id(PK)(int)
- in_genre(bridge_table):movie_id(FK)(int),genre_id(int)
SELECT count(*) as common_genre
FROM(
// getting genres of first movie
SELECT in_genre.genre_id
FROM movie INNER JOIN in_genre ON movie.id = in_genre.movie_id
WHERE movie.id = 0109830
INTERSECT
// getting genres of second movie
SELECT in_genre.genre_id
FROM movie INNER JOIN in_genre ON movie.id = in_genre.movie_id
WHERE movie.id = 1375666
) as genres
【问题讨论】:
-
两次
EXISTS()? -
存在作品感谢您的建议@wildplasser, @lLukStorms
标签: sql postgresql