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

时间:2021-02-23 12:37:22

标签: sql sql-server database

我有表 - 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 相关

1 个答案:

答案 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;

这将返回与自身匹配的电影(具有两个类别)。我会让你过滤掉它。此外,电影对出现两次——在任一方向。