让我们说我们有表SP(sid,pid),表明学生sid参与项目pid.现在我想要一个mysql查询来选择至少参与一个项目的所有学生对,以及他们合作的项目数量.
例如:
输入:
S1 P1
S1 P2
S2 P1
S3 P1
S4 P1
S4 P2
输出:
S1 S2 1
S1 S3 1
S1 S4 2
S2 S3 1
S2 S4 1
S3 S4 1
Eric的答案可能会有所改善:
select
sp1.sid as sid1,
sp2.sid as sid2,
count(*) as num
from
sp as sp1
inner join sp as sp2 on sp1.pid=sp2.pid and sp1.sid<sp2.sid
group by sp1.sid, sp2.sid
;
Run Code Online (Sandbox Code Playgroud)
使用<代替<>来避免geting(1,4,2)和(4,1,2)