这有点复杂所以请耐心等待。下面是一个名为“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
答案 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;
<
条件只是确保每对成员只在结果集中出现一次。