当前位置: 代码迷 >> Sql Server >> 内连接后怎么分页
  详细解决方案

内连接后怎么分页

热度:23   发布时间:2016-04-24 10:21:51.0
内连接后如何分页
sqlserver 对一张表进行分页查询,但是还要通过第二章张表获取信息
比如有一张表
create table Student(
sid int primary key identity(1,1) ,
sname varchar(15) not null
)
第二张表
create table Comment(
id int primary key identity(1,1) ,
sid int not null
)
我需要对第二张表comment 进行分页查询,但是还要通过第一张表查询姓名
要改如何写sql代码


我用内连接后接下来该如何做
------解决方案--------------------
跟普通的单表分页有区别吗?
select * from 
(
select row_number()over(order by A.id)as row_num, A.*,B.* from A inner join B on A.id=B.id 
) where row_num>10 and row_num<=20

你就给他看成单表的分页,只不过是多了另外一个表的部分字段而已
------解决方案--------------------
昨天刚好在2012下测试分页
虚拟机上高的,代码贴不出来,截个图示例一下


------解决方案--------------------
try this,

declare @pagesize int,@pagenum int

select @pagesize=[页记录数],@pagenum=[页码]

select id,sid,sname from
(select a.id,a.sid,b.sname,
       (row_number() over(order by getdate())-1)/@pagesize+1 'rn'
 from Comment a
 inner join Student b on a.sid=b.sid) t
where t.rn=@pagenum

------解决方案--------------------


declare @page_size int;
declare @page_num int;

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

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

select id,sid,sname
from
(
select c.id,
       c.sid,
       s.sname,
       
       --这里按照@@servername来排序,
       --你可以根据需要按照id,sid,sname等字段来排序
       (row_number() over(order by @@servername) - 1) / @page_size as rownum
from commet c
inner join student s
        on c.sid = s.sid
)t
where rownum = @page_num - 1
  相关解决方案