sql 中交叉连接的组合(不是排列)

2024-03-07

如果我有一个表想要交叉连接到自身,如何删除重复的行?或者换句话说,我怎样才能进行“顺序无关紧要”的交叉连接?

例如,如果我有一个表 T:

field |
-------
   A  |
   B  |
   C  |

我交叉连接到自身,这样我就不会得到 A |一行

T as t1
cross join
T as t2
  on t1.field != t2.field

我会得到以下信息:

field | field
------+-------
  A   |   B
  A   |   C
  B   |   A
  B   |   C
  C   |   A
  C   |   B

然而,对我来说,A、B 与 B、A 是一样的。

有没有好的方法来删除这些重复项?换句话说,我想要的是组合而不是排列。


T as t1
inner join
T as t2
  on t1.field < t2.field

FWIW,你可以使用INNER JOIN对于这一点,严格来说,这并不是一个CROSS JOIN。 MySQL(或许还有其他一些 RDBMS)将这两种类型的联接视为相同,但在 ANSI SQL 中,交叉联接没有联接条件——它是故意的笛卡尔积。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql 中交叉连接的组合(不是排列) 的相关文章

随机推荐