sql怎么获取树那样的数据

来源:百度知道 编辑:UC知道 时间:2024/09/20 06:53:27
就是说同一个表...有ID和fatherID...我现在想...当某ID存在子类别时...select 这个ID的同时...也把他二级/三级/...所有属于这个第一级的都select出来...

首先,创建一个函数,判断子节点是否在父节点下,是返回1,否返回0,如子节点与父节点为同一节点返回1
CREATE FUNCTION [dbo].[TestChildItem]
(@ChildId int,@Fatherid int )
RETURNS bit
AS
BEGIN
declare @i int
declare @n int
set @i=isnull(@ChildId,0)
set @n=0

while @i>0
begin
if @i=isnull(@fatherid,0)
begin
set @n=1
break
end
set @i=(select fatherID from 表1 where ID=@i)
end

return @n
END

接下来就简单了:
select *
from 表1
where dbo.TestChildItem(某ID,父ID)=1

就可以达到select 某ID的同时...也把他二级/三级/...所有属于这个第一级的都select出来

那就是递归查询