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

我的表包含 2 行:ref1 & ref2
表示例:

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

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

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

我正在使用 MySQL。

最佳答案

一个简单的 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

10-08 07:17