计数匹配对

时间:2015-04-18 19:31:20

标签: sql count matching

这有点复杂所以请耐心等待。下面是一个名为“list”的表,有2列。该表包含每个成员的数据和他们喜欢的电影。即会员01喜欢电影02,05,14,21和25.我想知道的是每位会员与另一位会员有多少类似的电影。例如,构件01和构件02具有一个共同的薄膜(薄膜14)。有没有办法在SQL中编写这个?

       List
------      ------
member      film
------      ------
01          02
01          05
01          14
01          21
01          25
02          03
02          09
02          14
03          01
03          05
03          17
03          21

1 个答案:

答案 0 :(得分:1)

您可以使用自联接和聚合为此编写常规查询。以下总结了每对用户的结果:

select l1.member, l2.member, count(*) as NumFilmsInCommon
from list l1 join
     list l2
     on l1.member < l2.member and l1.film = l2.film
group by l1.member, l2.member;

<条件只是确保每对成员只在结果集中出现一次。