我想从数据库表中提取所有行,其中行相互交叉引用。
我的表格包含2行:ref1
& ref2
表示例:
ID ref1 ref2
01 23 83
02 77 55
03 83 23
04 13 45
在这种情况下,我希望我的查询只返回行01和03,因为它们相互交叉引用。
这可以使用单个查询,还是需要手动迭代整个表?
我正在使用MySQL。
答案 0 :(得分:6)
简单的JOIN可以直接的方式做到这一点;
SELECT DISTINCT a.*
FROM mytable a
JOIN mytable b
ON a.ref1 = b.ref2 AND a.ref2 = b.ref1;
答案 1 :(得分:1)
select
*
from
tbl t1
where
exists (
select
'x'
from
tbl t2
where
t1.ref1 = t2.ref2 and
t1.ref2 = t2.ref1
)