MySQL查询用于查找图中边的权重

Afs*_*ami 1 mysql join

让我们说我们有表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

Eug*_*eck 5

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)