我最近有一个iterview。我被问到一个复杂的sql问题。我无法回答。
问:足球比赛中有8支球队。
案例1:每支球队只能互相比赛,但只有一次。
案例2:每支球队必须与另一支球队比赛两次。
您能告诉我这两种情况的SQl查询吗?
假设您有一个名为teams
的表,其中有id
和name
列,则可以自联接表。
第2季度将要产生团队的所有组合-除非团队不能与自己对抗:
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