首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自sql中的交叉连接的组合(而不是排列)

问来自sql中的交叉连接的组合(而不是排列)
EN

Stack Overflow用户
提问于 2011-08-19 02:48:01
回答 1查看 8.5K关注 0票数 22

如果我有一个想要与其自身进行交叉联接的表,我如何删除重复的行?或者换一种说法,我如何做一个“顺序无关紧要”的交叉连接?

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

代码语言:javascript
复制
field |
-------
   A  |
   B  |
   C  |

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

代码语言:javascript
复制
T as t1
cross join
T as t2
  on t1.field != t2.field

我将得到以下内容:

代码语言:javascript
复制
field | field
------+-------
  A   |   B
  A   |   C
  B   |   A
  B   |   C
  C   |   A
  C   |   B

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

有没有好的方法去掉这些重复的东西?换句话说,我想要的是组合而不是排列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-19 02:50:35

代码语言:javascript
复制
T as t1
inner join
T as t2
  on t1.field < t2.field

顺便说一句,你可以使用INNER JOIN来完成这项工作,它不是严格意义上的CROSS JOIN。MySQL (可能还有其他一些关系数据库管理系统)将这两种类型的连接视为相同的,但在ANSI SQL中,交叉连接没有连接条件--它是一种刻意的笛卡尔乘积。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7112513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档