--这个函数用于返回指定cateId及其所有子cateId
create function dbo.get_self_and_sub_items
(
@cateId int
)
returns @t table(cateId int, [level] int)
as
begin
declare @i int
set @i = 0
insert into @t select @cateId, 0
while @@rowcount > 0
begin
set @i = @i + 1
insert into @t
select a.cateId, @i
from category a, @t b
where a.parentId = b.cateId and b.[level] = @i -1
end
return
end
go
--查询属于指定类别及其所有子类别的NewID
select a.[newId]
from news a
inner join
(
select cateId
from dbo.get_self_and_sub_items(这里传入已知的cateId)
) b
on a.cateId = b.cateId