我有表 - MovieCategoty,其中包含 movieId 和 categoryId 作为列, 我需要获取与另一个电影 ID 相关的所有电影 ID。 相关方法 - 如果它们至少有两个共同的 CategoryID。 (查询应该用 MS SQL 服务器编写)。 我尝试了几种方法,但没有得到正确的结果。
表是 电影类别
电影ID | 类别 ID |
---|---|
1 | 4 |
2 | 6 |
2 | 4 |
3 | 1 |
3 | 3 |
3 | 6 |
4 | 1 |
4 | 3 |
5 | 1 |
5 | 2 |
5 | 3 |
例如,我的查询需要显示 movieId 3,4,因为它们都与 1,3 CategoryId 相关
答案 0 :(得分:0)
这是一个带有聚合的自连接:
select mc1.movieid, mc2.movieid, count(*) as num_categories
from movieCategory mc1 join
movieCategory mc2
on mc1.categoryid = mc2.categoryid
group by mc1.movieid, mc2.movieid
having count(*) >= 2;
这将返回与自身匹配的电影(具有两个类别)。我会让你过滤掉它。此外,电影对出现两次——在任一方向。