如何选择在某些列中具有相同多个值的所有不同行



我有一个表- MovieCategoty,其中包含movieId和categoryId作为列,我需要得到所有与另一个电影id相关的电影id。相关的意思-如果它们至少有两个共同的CategoryID。(查询应该是写在MS SQL服务器)。我试了几种方法,但没有得到正确的结果。

表是MovieCategoty

tbody> <<tr>2244555
movieId CategoryId
14
6
4
31
33
36
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;

返回与自身匹配的电影(包含两个类别)。我会让你把它过滤掉。此外,电影对在两个方向上都出现两次。

相关内容

  • 没有找到相关文章

最新更新