查詢新聞類別下的每個分類的第二條信息列表的存儲過程

---存儲過程(查詢每個類別的所有分類第二條數據的前n條不在前num條的信息)
create procedure  proc_selectNewsClassTwoInfo
@ParentID int,    //新聞父Id
@Num1 int=0,    //查詢的前幾
@Num2 int=0     //不在幾條的,比如:查詢5-9條,則參數爲4
as
declare @sql nvarchar(1000)      //sql語句
declare @sqlParm nvarchar(50)   //sql參數
begin
set @sql=N'select top '+cast(@Num1 as varchar)+' * from (select  top 100 percent d.* from dbo.VIEW_news_class_all d inner join
(select  top 100 percent  C.class_name,min(C.news_addtime) as data,min(id) as id from
(select  top 100 percent * from VIEW_news_class_all A
where A.id in
(select top 2 max(B.id) from VIEW_news_class_all B
where class_id=A.class_id and
class_parent=@parent
group by news_addtime
order by news_addtime desc)) C group by C.class_name) e
on d.id=e.id  order by d.news_addtime desc) f  where f.id not in (
select top '+cast(@Num2 as varchar)+' d.id from dbo.VIEW_news_class_all d inner join
(select  top 100 percent C.class_name,min(C.news_addtime) as data,min(id) as id from
(select top 100 percent * from VIEW_news_class_all A
where A.id in
(select top 2 max(B.id) from VIEW_news_class_all B
where class_id=A.class_id and
class_parent=@parent
group by news_addtime
order by news_addtime desc)) C group by C.class_name) e
on d.id=e.id order by news_addtime desc)
'
set @sqlParm=N'@parent int'
execute sp_executesql @sql,@sqlParm,@parent=@ParentID
end

go

----執行存儲過程 ,傳入3個參數,一個父id,一個是前幾條,一個是不在前幾條的

exec  proc_selectNewsClassTwoInfo @ParentID=14,@Num1=10,@Num2=0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章