查找彼此交叉引用的记录

时间:2014-08-17 17:26:36

标签: mysql sql

我想从数据库表中提取所有行,其中行相互交叉引用。

我的表格包含2行:ref1& ref2

表示例:

ID  ref1  ref2
01    23    83
02    77    55
03    83    23
04    13    45

在这种情况下,我希望我的查询只返回行01和03,因为它们相互交叉引用。

这可以使用单个查询,还是需要手动迭代整个表?

我正在使用MySQL。

2 个答案:

答案 0 :(得分:6)

简单的JOIN可以直接的方式做到这一点;

SELECT DISTINCT a.*
FROM mytable a
JOIN mytable b
  ON a.ref1 = b.ref2 AND a.ref2 = b.ref1;

An SQLfiddle to test with

答案 1 :(得分:1)

select
    *
from
    tbl t1
where
    exists (
        select
            'x'
        from
            tbl t2
        where
            t1.ref1 = t2.ref2 and
            t1.ref2 = t2.ref1
    )