Mysql 查找同一表的多个克隆之间的交集

Mysql 查找同一表的多个克隆之间的交集,mysql,Mysql,我试图找到mysql表中所有列之间的交集。 我尝试的是: select * from table where col1=col2 AND col1=Col3 AND col1=Col4 AND col2=Col3 AND col2=Col4 AND col3=Col4; 我不认为这个问题很有效。 有人能提出一个有效的方法吗。请注意,所有列都来自同一个表,您需要将表的实例连接在一起 select distinct * from ( select t1.col1 'intersec

我试图找到mysql表中所有列之间的交集。 我尝试的是:

select * from table where 
  col1=col2 AND col1=Col3 AND col1=Col4 AND 
  col2=Col3 AND col2=Col4 AND col3=Col4;
我不认为这个问题很有效。
有人能提出一个有效的方法吗。请注意,所有列都来自同一个表,您需要将表的实例连接在一起

select distinct * from (
  select t1.col1 'intersection' from table t1, table t2
  where t1.col1=t2.col2 or t1.col1=t2.col3 or t1.col1=t2.col4
  union select t3.col2 'intersection' from table t3, table t4
  where t3.col2=t4.col3 or t3.col2=t4.col4
  union select t5.col3 'intersection' from table t5, table t6
  where t5.col3=t6.col4
)

[编辑]修改为包括不涉及第1列的交点,并显示值而不是整个记录。

这个问题不是100%清楚。有什么比您现有的更有效?也许您想使用
而不是
。否则,您的查询中的
和col2=Col3以及col2=Col4和Col3=Col4
是不必要的。请解释您需要的输出是什么?输出应该是所有列的交集。我认为您的查询是针对两个表的,我在SQL中只有一个表,您可以将同一个表的多个实例相互连接。您可以声明每个实例具有不同的有效名称。上面,表t1、表t2中的
表示使用相同的表(在本例中称为“表”),就好像它是两个名为
t1
t2
的表一样。只是为了澄清一下。。。如果一个表中有两行,其中第一行包含(1,2,3,4),第二行包含(2,5,6,7),您会认为这是“列之间的交叉点”,第一行中的列中的“2”与第二行中的列中的“2”匹配吗?或者您可以说,如果我有一个数字为(1,2,3,4)和(a,b,2,c)的两列然后两列的交点是2。我进行了编辑以解决这两个问题。列出交集值而不是行,并比较列1以外的列。