如果我有一个想要与其自身进行交叉联接的表,我如何删除重复的行?或者换一种说法,我如何做一个“顺序无关紧要”的交叉连接?
例如,如果我有一个表T:
field |
-------
A |
B |
C |我自己交叉连接,这样我就不会得到A|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是一样的。
有没有好的方法去掉这些重复的东西?换句话说,我想要的是组合而不是排列。
发布于 2011-08-19 02:50:35
T as t1
inner join
T as t2
on t1.field < t2.field顺便说一句,你可以使用INNER JOIN来完成这项工作,它不是严格意义上的CROSS JOIN。MySQL (可能还有其他一些关系数据库管理系统)将这两种类型的连接视为相同的,但在ANSI SQL中,交叉连接没有连接条件--它是一种刻意的笛卡尔乘积。
https://stackoverflow.com/questions/7112513
复制相似问题