不太懂SQL,求在现在的语句上加一个分页

ILOVE_ASPNET 2013-12-20 05:13:57


SELECT A.ID, A.PROGRAM_NAME,A.PROGRAM_GUID,D.COMPANY_NAME,F.FLOOR_NAME,F.STREET
FROM (
select top 20 * FROM dbo.BN_PROGRAM_EFFECT WHERE LOGIC_DEL=0 ORDER BY CREATED_ON DESC )
A LEFT JOIN dbo.BN_DECORATION_COMPANY D
ON A.COMPANY_ID = D.COMPANY_ID


说明BN_PROGRAM_EFFECT 为方案表,BN_DECORATION_COMPANY为方案公司表
现在 要加一个分页,
主要是在这一段 把这句换成分页的 效果 ,top20条 ,SQL不太会,写的总有一些问题,求帮忙。
(
select top 20 * FROM dbo.BN_PROGRAM_EFFECT WHERE LOGIC_DEL=0 ORDER BY CREATED_ON DESC )
...全文
241 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2013-12-23
  • 打赏
  • 举报
回复
假设每页有20条记录.

SELECT A.ID,A.PROGRAM_NAME,A.PROGRAM_GUID,D.COMPANY_NAME,F.FLOOR_NAME,F.STREET 
FROM (select (row_number() over(order by getdate())-1)/20+1 'pageid',* 
      FROM dbo.BN_PROGRAM_EFFECT 
      WHERE LOGIC_DEL=0 
      ORDER BY CREATED_ON DESC) A 
LEFT JOIN dbo.BN_DECORATION_COMPANY D ON A.COMPANY_ID = D.COMPANY_ID    
where A.pageid=[页码]
  • 打赏
  • 举报
回复
declare @page_size int;
declare @page_num int;

--比如:每页20条记录
set @page_size = 20;

--比如:先取第1页
set @page_num = 1;

select t.ID, t.PROGRAM_NAME,t.PROGRAM_GUID,
       t.COMPANY_NAME,t.FLOOR_NAME,t.STREET,
from
(
SELECT A.ID, A.PROGRAM_NAME,A.PROGRAM_GUID,D.COMPANY_NAME,F.FLOOR_NAME,F.STREET,
       (row_number() over(order by CREATED_ON DESC) - 1) / @page_size as rownum
FROM dbo.BN_PROGRAM_EFFECT A
LEFT JOIN dbo.BN_DECORATION_COMPANY D 
ON A.COMPANY_ID = D.COMPANY_ID  
WHERE LOGIC_DEL=0 
)t
where rownum = @page_num - 1

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧