求一个表中某个分类前几条的记录(这样做效率其实不高,只是做记录一下)

简介:
< 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

0
0
« 上一篇: Asp.Net关于错误“Sources”参数中指定了多次。“Sources”参数不支持重复项。
» 下一篇: asp.net防类似DDOS攻击(CC攻击)代码
posted @  2011-04-03 13:54  netcorner 阅读( 43) 评论( 0编辑  收藏
相关文章
|
3月前
|
SQL 移动开发 Oracle
SQL查询连续六天数据记录的技巧与方法
在数据库查询中,实现针对连续几天(如连续六天)的数据筛选是一个常见且稍具挑战性的任务
【SQL开发实战技巧】系列(七):从有重复数据前提下如何比较出两个表中的差异数据及对应条数聊起
本篇文章讲解的主要内容是:***如果有重复数据如何检查出两个表中的差异数据及对应条数、表连接做聚合容易出现重复计算的错误、多表查询空值处理问题、NOT IN的子查询范围不能是空值,否则查询结果为空。***
【SQL开发实战技巧】系列(七):从有重复数据前提下如何比较出两个表中的差异数据及对应条数聊起
|
SQL 关系型数据库 MySQL
[MySQL优化案例]系列 — 索引、提交频率对InnoDB表写入速度的影响
[MySQL优化案例]系列 — 索引、提交频率对InnoDB表写入速度的影响
137 0
[MySQL优化案例]系列 — 索引、提交频率对InnoDB表写入速度的影响
|
数据库 索引
存在逻辑删除的表字段上建立唯一索引的巧办法 (逻辑删除与唯一索引)
设计数据库唯一索引时,经常会碰到唯一删除的键值,导致很难处理,这里就简单介绍一种巧办法,帮你快速解决该问题
1982 0
存在逻辑删除的表字段上建立唯一索引的巧办法 (逻辑删除与唯一索引)