我有一个表- MovieCategoty,其中包含movieId和categoryId作为列,我需要得到所有与另一个电影id相关的电影id。相关的意思-如果它们至少有两个共同的CategoryID。(查询应该是写在MS SQL服务器)。我试了几种方法,但没有得到正确的结果。
表是MovieCategoty
movieId | CategoryId | 1 | 4 | 2
---|---|
6 | |
4 | |
3 | 1 |
3 | 3 |
3 | 6 |
1 | |
3 | |
1 | |
2 | |
3 |
这是一个带有聚合的自连接:
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;
返回与自身匹配的电影(包含两个类别)。我会让你把它过滤掉。此外,电影对在两个方向上都出现两次。