今天早上看了一个邹健写的SQL,太牛了!!

--首先写一个函数,得到指定类别下的所有子类别
create function f_cid(
@ClassName varchar(10) --要查询的类别名(如果类别名会重复,改用NClassID
)returns @re table(NClassID int,level int)
as
begin
 declare @l int
 set @l=0
 insert @re select NClassID,@l
 from Class
 where ClassName=@ClassName
 while @@rowcount>0
 begin
  set @l=@l+1
  insert @re select a.NClassID,@l
  from Class a,@re b
  where a.ClassID=b.NClassID and b.level=@l-1
 end
 return
end
go

--调用函数实现查询
select a.*
 ,b.ArticleID,b.Title
from Class a,Article b,f_cid('体育') a1 --查询体育及下面的所有子类
where a.NClassID=a1.NClassID
 and b.NClassID=a1.NClassID
 and b.ArticleID in(
  select top 10 ArticleID from Article
  where NClassID=a1.NClassID)

转载于:https://www.cnblogs.com/kary/archive/2005/03/14/118292.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值