我的数据库中有以下数据:
Parent Child
101 102
101 103
101 104
101 105
101 106我的参数是106。并且使用参数,我想要检索它的父级下的所有其他子级,即101。我试着使用递归方法,但给出了以下数据,它不起作用。有没有其他的方法来表达一个查询?
发布于 2013-09-27 10:50:31
假设您想要获取值@p0的同级,您可以使用一个简单的自联接:
SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0这里的不相等子句确保您得到的同级不包括您搜索的值。必要时将其删除。
SQL Fiddle example
既然您提到了递归,那么您可能希望整个树从值@p0的父级开始。在这种情况下,您可以使用递归CTE:
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 treeSQL Fiddle示例using your data和with additional data to demonstrate the recursive CTE
发布于 2014-01-18 00:45:41
SQL Authority有一个博客,很好地解释了如何使用递归CTE执行分层查询
http://blog.sqlauthority.com/2012/04/24/sql-server-introduction-to-hierarchical-query-using-a-recursive-cte-a-primer/
问候
发布于 2013-09-27 10:40:45
select child
from my_table T1
where exists (select 1 from my_table T2 where child = @parameter and T1.parent = T2.parent)https://stackoverflow.com/questions/19041814
复制相似问题