在SQL中递归查询数据

alter PROCEDURE 根据分类查主题111111111111
    @类别ID int
as
begin
    declare @id int
    set @id=@类别ID;
    with temp(idCategory,categoryRoot) --递归法
    as(
        select 类别ID,根类别
        from dbo.主题类别表
        where 根类别=@id
        
        union all --Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序Union All,对两个结果集进行并集操作,包括重复行,不进行排序;


        select 类别ID,根类别
        from dbo.主题类别表
        inner join temp on temp.idCategory=根类别        
    )
    select * from temp
    end
    
    
    select * from dbo.论坛_主题表
    inner join dbo.主题类别表 on 类别ID=类别
    where 类别ID in
    (select idCategory from temp
     union all
     select @类别ID
    )
end

posted @ 2013-01-21 18:12  翠儿  阅读(208)  评论(0编辑  收藏  举报