Giả sử bạn muốn lấy anh chị em của giá trị @p0
, bạn có thể sử dụng một tự tham gia đơn giản:
SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0
Mệnh đề không bằng ở đây đảm bảo rằng bạn nhận được anh chị em không bao gồm giá trị bạn đã tìm kiếm. Xóa nó nếu cần.
Vì bạn đề cập đến đệ quy, có lẽ bạn muốn toàn bộ cây bắt đầu từ cấp độ gốc của giá trị @p0
. Trong trường hợp đó, bạn có thể sử dụng CTE đệ quy:
WITH parent AS (
SELECT Parent
FROM Table1
WHERE Child = @p0
), tree AS (
SELECT x.Parent, x.Child
FROM Table1 x
INNER JOIN parent ON x.Parent = parent.Parent
UNION ALL
SELECT y.Parent, y.Child
FROM Table1 y
INNER JOIN tree t ON y.Parent = t.Child
)
SELECT Parent, Child
FROM tree
Ví dụ về SQL Fiddle sử dụng dữ liệu của bạn và với dữ liệu bổ sung để chứng minh CTE đệ quy