2010-01-29 48 views
1

我有一个简单的问题,真的让我难倒了。如何从表中找到递归的自加入记录

我有一个主表的表X中

Table X 
ID 
_________ 
1 
2 
3 
4 
5 

我有表X连接表,允许记录自加盟。让我们把这种JoinTableX

JoinTableX 
RecordAID RecordBID 
--------- -------- 
1   2  (So Record 1 from Table X has a link to Record 2 from Table X) 
1   3 
1   4 
2   3 
2   4 
3   1 
3   2 
4   1 
4   2 

那么,如何写一个SQL查询来显示我的所有的JoinTableX有彼此(例如波夫表X记录1连接到表X记录4和重复的依赖记录表X记录4与表X记录1相关联。

回答

4
select * 
from JoinTableX a 
inner join JoinTableX b on a.RecordAID = b.RecordBID 
    and a.RecordBID = b.RecordAID 
1
(SELECT RecordAID, RecordBID FROM JoinTableX) 
INTERSECT 
(SELECT RecordBID, RecordAID FROM JoinTableX)