如果我有一個表中以下記錄:
Parent Child
1 2 <--
2 1 <--
3 2
3 4
等等
而且我想,以確定是他們的孩子都在父母的子記錄他們的父母如上面箭頭所示的兩條記錄,我將如何完成此操作?
我想在此表上運行一些遞歸SQL,但這些項目導致無限循環。我想識別這些項目,以便他們可以手動處理。
我的大腦從遞歸查詢搞亂了,我沒有什麼可以解決這個問題了。請幫助:)
如果我有一個表中以下記錄:
Parent Child
1 2 <--
2 1 <--
3 2
3 4
等等
而且我想,以確定是他們的孩子都在父母的子記錄他們的父母如上面箭頭所示的兩條記錄,我將如何完成此操作?
我想在此表上運行一些遞歸SQL,但這些項目導致無限循環。我想識別這些項目,以便他們可以手動處理。
我的大腦從遞歸查詢搞亂了,我沒有什麼可以解決這個問題了。請幫助:)
如果將其理解你很好,你不需要遞歸都:
SELECT a.parent, a.child
FROM table1 a
INNER JOIN table1 b ON (b.child=a.parent and a.child = b.parent)
你可能想使用LEFT JOIN
而不是INNER
如果你還需要顯示不滿足行條件。
以下查詢將在您的示例中起作用。如果需要更多,你就必須擴大示範信息
;WITH CTE_DATA AS (
Select Parent = 1, Child = 2
union Select Parent = 2, Child = 1
union Select Parent = 3, CHild = 2
union Select Parent = 3, Child = 4
)
select
d1.*
from
CTE_DATA d1
join CTE_DATA d2 on d1.Child = d2.Parent and d2.Child = d1.Parent
DECLARE @YourTable TABLE (Parent INT, Child INT)
INSERT INTO @YourTable
SELECT 1, 2
UNION
SELECT 2, 1
UNION
SELECT 3, 2
UNION
SELECT 3, 4
SELECT *
FROM @YourTable A
INNER JOIN @YourTable B
ON A.Parent = B.Child AND A.Child = B.Parent
這很容易 - 謝謝! – ChandlerPelhams
+1 - 擊敗我! –