求一个表中某个分类前几条的记录(这样做效率其实不高,只是做记录一下)
2011-04-03 13:54
621 查看
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> declare @sql as nvarchar(max),@sql1 as nvarchar(max),@sql2 as nvarchar(max),@i as int,@j as int,@l as int,@tmp as nvarchar(max),@stri as nvarchar(5)
set @sql1='';
set @i=0
set @l=3
set @sql2=''
while(@i<@l)
begin
set @stri=cast(@i as nvarchar(5))
set @sql='declare @max'+@stri+' as table(id bigint,parentid int);
insert into @max'+@stri+'(id,parentid)
select max(id),parentid
from Products inner join Classes on Classes.classid=Products.classid
where parentid>0 '
set @j=0
set @tmp=''
while(@j<@i)
begin
set @tmp=@tmp+' and id not in(select id from @max'+cast(@j as nvarchar(5))+')'
set @j=@j+1
end
set @sql=@sql+@tmp+' group by ParentID;'
set @sql1=@sql1+@sql;
if(@i>0) set @sql2=@sql2+' union '
set @sql2=@sql2+'select * from @max'+@stri+' '
set @i=@i+1
end
set @sql=@sql1+
'select ProductName,ProductDpic,1 as indexID,Products.ID,UserName,RealName,Products.Addtime,ParentID from
Products inner join Admin_User on Admin_User.id=Products.userid inner join ('
+@sql2+') as t on t.id=products.id'
exec sp_executesql @sql
#数据库技术
set @sql1='';
set @i=0
set @l=3
set @sql2=''
while(@i<@l)
begin
set @stri=cast(@i as nvarchar(5))
set @sql='declare @max'+@stri+' as table(id bigint,parentid int);
insert into @max'+@stri+'(id,parentid)
select max(id),parentid
from Products inner join Classes on Classes.classid=Products.classid
where parentid>0 '
set @j=0
set @tmp=''
while(@j<@i)
begin
set @tmp=@tmp+' and id not in(select id from @max'+cast(@j as nvarchar(5))+')'
set @j=@j+1
end
set @sql=@sql+@tmp+' group by ParentID;'
set @sql1=@sql1+@sql;
if(@i>0) set @sql2=@sql2+' union '
set @sql2=@sql2+'select * from @max'+@stri+' '
set @i=@i+1
end
set @sql=@sql1+
'select ProductName,ProductDpic,1 as indexID,Products.ID,UserName,RealName,Products.Addtime,ParentID from
Products inner join Admin_User on Admin_User.id=Products.userid inner join ('
+@sql2+') as t on t.id=products.id'
exec sp_executesql @sql
#数据库技术
相关文章推荐
- 其实只是想开个博客记录一下自己的成长历程
- 记录一下CSS选择器的效率从高到低的一个排序
- 由三目运算符 == ? : 引起的一个问题,醉了,基础不过关。记录一下,比较简单的一个问题,只是为了记录一下
- 微信 oauth 登录 ,回调两次,一个坑,记录一下。
- 记录一下 __gnu_cxx::hash_map传一个新allocator的写法
- 实现图片验证码,其实就是简单的验证码实现,记录一下
- SQL在不同数据库中查询前几条记录的用法分类
- 实现一个蛋疼的order排序功能,记录一下
- SQL在不同数据库中查询前几条记录的用法分类
- 记录一下JPQL查询语句中的一个小错误
- 最近开发遇到一个传值和引用问题 记录一下
- 最近开始学习ubuntu,想记录一下学习过程,也为在学习的朋友提供一个参考
- 一个博客上的KVM文章,暂时看不完,记录一下
- 记录一个问题看得懂就帮忙解决一下
- C++——只是单纯的纠正一下我一直以来的一个错误观点
- 记录一下 __gnu_cxx::hash_map传一个新allocator的写法
- 30岁 开通了一个博客,记录一下自己的生活
- js判断checkbox选中(记录一下,一个小问题引发的)
- 新闻上的文本分类:机器学习大乱斗 王岳王院长 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处