组合的 sql 查询是什么

what is the sql query for combination

我最近有一个 iterview。我被问到一个复杂的 sql 问题。我无法回答。

问:足球比赛有8支球队。

case1:每支球队都必须互相比赛,但只有一次。

案例2:每支球队与另一支球队比赛两次。

你能告诉我这两种情况的 SQl 查询吗?

假设您有一个名为 teams 的 table,包含列 idname,您可以自行加入 table。

Q2 是关于生成所有球队的组合 - 除了球队不能与自己比赛:

select t1.name, t2.name
from teams t1
inner join teams t2 on t1.id <> t2.id

对于 Q1,您可以使用不等式条件使每个元组只出现一次:

select t1.name, t2.name
from teams t1
inner join teams t2 on t1.id < t2.id

对于第一个查询,您可以执行以下操作:

select a.*, b.*
from team a
join team b on a.id < b.id

对于第二个,你可以这样做:

select a.*, b.*
from team a
join team b on a.id <> b.id