使用MSSQL查询获取父级的所有子级

前端之家收集整理的这篇文章主要介绍了使用MSSQL查询获取父级的所有子级前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的数据库中有以下数据:
  1. Parent Child
  2. 101 102
  3. 101 103
  4. 101 104
  5. 101 105
  6. 101 106

我的参数是106.并且使用参数我想要检索其父项下的所有其他子项,即101.我尝试使用递归方法但是在给定以下数据的情况下它不起作用.还有另一种方法来制定查询吗?

解决方法

假设您想获得值为@ p0的兄弟姐妹,您可以使用简单的自联接:
  1. SELECT p.Child
  2. FROM Table1 c
  3. INNER JOIN Table1 p ON c.Parent = p.Parent
  4. WHERE c.Child = @p0
  5. AND p.Child <> @p0

这里不等的条款确保你让兄弟姐妹不包括搜索的值.必要时将其取下.

SQL Fiddle example

既然你提到了递归,也许你希望整个树从值@p0的父级开始.在这种情况下,您可以使用递归CTE:

  1. WITH parent AS (
  2. SELECT Parent
  3. FROM Table1
  4. WHERE Child = @p0
  5. ),tree AS (
  6. SELECT x.Parent,x.Child
  7. FROM Table1 x
  8. INNER JOIN parent ON x.Parent = parent.Parent
  9. UNION ALL
  10. SELECT y.Parent,y.Child
  11. FROM Table1 y
  12. INNER JOIN tree t ON y.Parent = t.Child
  13. )
  14. SELECT Parent,Child
  15. FROM tree

sql小提琴示例using your data
with additional data to demonstrate the recursive CTE

猜你在找的MsSQL相关文章