同一张表上的 DB 笛卡尔积

Nul*_*ter 4 sql database join cartesian

我有一个包含三行的单列表,如下所示:

第 1 列

TEAM1
TEAM2
team3
team4

我想做一个自笛卡尔与结果加入如下:
TEAM1,TEAM2
TEAM1,team3
TEAM1,team4
TEAM2,team3
TEAM2,team4
team3,team4

Rom*_*kar 5

cartesian productcross join在数据库方面,你可以删除团队所在的相等行where条款:

select
    t1.col1, t2.col1
from teams as t1
    cross join teams as t2
where
    t1.col1 <> t2.col1
Run Code Online (Sandbox Code Playgroud)

  • 小更正:要获得问题中指定的所需结果(组合而不是排列),您需要`where t1.col1 &gt; t2.col1`。否则你不会得到 (1,1),但当你只想要所有组合的笛卡尔积的一半时,你仍然会得到 (1,2) 和 (2,1)。 (2认同)

Dan*_*cuk 1

您可以将两个表连接在一起以获得预期的输出,如下所示:

select t1.col1, t2.col1
from table t1
join table t2
on t1.col1 <> t2.col1
Run Code Online (Sandbox Code Playgroud)