Giả sử bạn muốn nhận được anh chị em giá trị @p0
, bạn có thể sử dụng một cách đơn giản tự tham gia:
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ình đẳng ở đây làm cho chắc chắn bạn sẽ có được anh chị em không bao gồm giá trị bạn đã tìm kiếm. Loại bỏ nó khi cần thiết.
SQL Fiddle example
Kể từ khi bạn đề cập đến đệ quy mặc dù, có lẽ bạn muốn toàn bộ cây bắt đầu từ phụ huynh của các giá trị @p0
. Trong trường hợp này, bạn có thể sử dụng một CTE đệ quy:
ví dụ
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
SQL Fiddle using your data và with additional data to demonstrate the recursive CTE
Nguồn
2013-09-27 02:50:30
Một chút giải thích với mã luôn tốt đẹp. –