sql分页如何跳转页数(sql分页的几种方式)

http://www.itjxue.com  2023-01-26 13:17  来源:未知  点击次数: 

如何用sql,实现做翻页

1、首先获取总数据条数 select count(id) from table

2、然后根据总数获取总页数

3、根据ajax传递参数,page,size

sql语句如下

select * from table limit (page-1) * size , size

描述较为简略,如有疑问可追答

sql分页查询语句 首页,上一页怎么实现

--假如每页显示条数据10条

--哪么第一页1~10 第二页11~20 即起始行数=10*(页数-1)+1,结束行=页数*10

declare?@start?int

declare?@end?int

set?@start=8

set?@end=18

select?*?from(

????select?P_ID,P_ClassName,?ROW_NUMBER()?OVER(order?by?P_ID)?as?row?from

dbo.AD_Position)as?a

where?row?between?@start?and?@end

--太酷了,这样一个分页就搞定了。还可以这样变化,可选参数只是[页的大小]

declare?@pagesize?int

declare?@start?int

declare?@end?int

declare?@pagecount?int

set?@pagecount=2

set?@pagesize=10

????set?@start=(@pagesize*(@pagecount-1)+1)

????set?@end=@pagecount*@pagesize

select?*?from(

????select?P_ID,P_ClassName,?ROW_NUMBER()?OVER(order?by?P_ID)?as?row?from

dbo.AD_Position)as?a

where?row?between?@start?and?@end

这是前几年的一个博文摘录,希望对你用!

sql数据库分页

楼主,刚刚有个问友和你问的差不多,我刚回答了他的。就直接把刚回答的复制给你看看啦。希望对你有帮助、。

要想分页,首先得做好准备工作。你要先声明每页显示多少条数据,还得获取当前选择的是多少页的页码。有了这两个分页就好办了。

sql如下:select top 10 from tableName

where (id not in(select top 20 from tableName order by Id desc)) order by Id desc

分页需要使用到的一些动态数据如下:

每页显示的数量:自己定义。

总页数:数据总条数/每页显示的条数

当前页码的计算方法:(页码-1)*每页显示的数量。比如我要浏览第3页的数据,3从客户端传送过来后,在后台对页码进行处理:(3-1)*每页显示的数量(假如是10).算出来后的结果就是20.你在把20以参数注入的方式动态添加到上面那个20那里就ok了。

sql中的10表示你每页显示的数据,这里跟10,就代表每页显示10条。(你可以定义一个常量作为每页显示的条数)

where中的20表示不包括前面的20条数据,也就是查询出从第21条到30之间的数据。

不知道我这样说你是否理解,其实只要理解了sql语句,分页就很好做了。

sql 分页多条件查询

查询可以用if else 去做。

例如:

sql="select * from ........."

``````````````

xh=request("型号")

······

if xh"" then sql=sql+" and 型号='"xh"'"

分页可以用

%TurnPage(rs,20,"型号="xh"其他6个参数·······")%

%

Sub TurnPage(ByRef Rs_tmp,PageSize,canshu) 'Rs_tmp 记录集 PageSize 每页显示的记录条数;

Dim TotalPage '总页数

Dim PageNo '当前显示的是第几页

Dim RecordCount '总记录条数

Rs_tmp.PageSize = PageSize

RecordCount = Rs_tmp.RecordCount

TotalPage = INT(RecordCount / PageSize * -1)*-1

PageNo = Request.QueryString ("PageNo")

'直接输入页数跳转;

If Request.Form("PageNo")"" Then PageNo = Request.Form("PageNo")

'如果没有选择第几页,则默认显示第一页;

If PageNo = "" then PageNo = 1

If RecordCount 0 then

Rs_tmp.AbsolutePage = PageNo

End If

'获取当前文件名,使得每次翻页都在当前页面进行;

Dim fileName,postion

fileName = Request.ServerVariables("script_name")

postion = InstrRev(fileName,"/")+1

'取得当前的文件名称,使翻页的链接指向当前文件;

fileName = Mid(fileName,postion)

response.write "table border=0 width='100%'tr "

If RecordCount = 0 or TotalPage = 1 Then

Response.Write ""

Else

response.write "td align=left style='font-size:12px' 总页数:font color=#ff3333"TotalPage"/font页"

response.write "当前第font color=#ff3333"PageNo"/font页 /td "

response.write "td align='right' style='font-size:12px' "

end if

If RecordCount = 0 or TotalPage = 1 Then

Response.Write ""

Else

response.write "a href='"fileName"?PageNo=1"canshu"'首页|/a"

If PageNo - 1 = 0 Then

Response.Write "前页|"

Else

response.write "a href='"fileName"?PageNo="PageNo-1""canshu"'前页|/a"

End If

If PageNo+1 TotalPage Then

Response.Write "后页|"

Else

response.write "a href='"fileName"?PageNo="PageNo+1""canshu"'后页|/a"

End If

response.write "a href='"fileName"?PageNo="TotalPage""canshu"'末页/a"

End If

response.write "/td/td/tr/table "

end sub%

如何使用sql语句进行分页操作?

利用SQL语句分页要看你用的什么数据库。

Oracle数据库可以使用ROWNUM或row_number(),例如:Select

*

from

(select

ROWNUM

rn,

t.*

from

table

t)

where

rn

between

11

and

20;

Select

*

from

(select

row_number()

over

(ORDER

BY

col1)

rn,

t.*

from

table

t)

where

rn

between

11

and

20;

SQLServer数据库可以用Top或者row_number()函数,道理同上。

利用SQL分页有局限性,就是针对不同的数据库有不同的写法,所以通常会在应用程序里面做分页通用性比较强。但是对于数据量非常庞大的应用来说,还是用SQL分页比较适合。

(责任编辑:IT教学网)

更多

推荐java认证文章