数据库分页查询sql语句?在oracle数据库中的分页SQL语句怎么写
很多朋友对于数据库分页查询sql语句和在oracle数据库中的分页SQL语句怎么写不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
sql数据库分页(数据库分页查询sql语句)
楼主,刚刚有个问友和你问的差不多,我刚回答了他的。就直接把刚回答的复制给你看看啦。希望对你有帮助、。
要想分页,首先得做好准备工作。你要先声明每页显示多少条数据,还得获取当前选择的是多少页的页码。有了这两个分页就好办了。
sql如下:selecttop10fromtableName
where(idnotin(selecttop20fromtableNameorderbyIddesc))orderbyIddesc
分页需要使用到的一些动态数据如下:
每页显示的数量:自己定义。
总页数:数据总条数/每页显示的条数
当前页码的计算方法:(页码-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%>
在oracle数据库中的分页SQL语句怎么写
前提:
分页参数:size= 20 page= 2;
没有order by的查询;
嵌套子查询,两次筛选(推荐使用)。
SQL语句:
SELECT*
FROM(SELECT ROWNUM AS rowno, t.*
FROM DONORINFO t
WHERE t.BIRTHDAY BETWEEN TO_DATE('19800101','yyyymmdd')
AND TO_DATE('20060731','yyyymmdd')
AND ROWNUM<= 20*2) table_alias
WHERE table_alias.rowno> 20*(2-1);
扩展资料:
rownum总是从1开始的,第一条不满足去掉的话,第二条的rownum又成了1。依此类推,所以永远没有不满足条件的记录。
可以这样理解:rownum是一个序列,是Oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2。
依次类推:当使用“>、>=、=、between...and”这些条件时,从缓冲区或数据文件中得到的第一条记录的rownum为1,不符合sql语句的条件,会被删除,接着取下条。下条的rownum还会是1,又被删除,依次类推,便没有了数据。
SQL Server 分页 查询语句
四种方式实现SQLServer分页查询
SQLServer的数据分页:
假设现在有这样的一张表:
CREATE TABLE test
(
id int primary key not null identity,
names varchar(20)
)
然后向里面插入大约1000条数据,进行分页测试
假设页数是10,现在要拿出第5页的内容,查询语句如下:
--10代表分页的大小
select top 10*
from test
where id not in
(
--40是这么计算出来的:10*(5-1)
select top 40 id from test order by id
)
order by id
原理:需要拿出数据库的第5页,就是40-50条记录。首先拿出数据库中的前40条记录的id值,然后再拿出剩余部分的前10条元素
第二种方法:
还是以上面的结果为例,采用另外的一种方法
--数据的意思和上面提及的一样
select top 10*
from test
where id>
(
select isnull(max(id),0)
from
(
select top 40 id from test order by id
) A
)
order by id
原理:先查询前40条记录,然后获得其最id值,如果id值为null的,那么就返回0
然后查询id值大于前40条记录的最大id值的记录。
这个查询有一个条件,就是id必须是int类型的。
第三种方法:
select top 10*
from
(
select row_number() over(order by id) as rownumber,* from test
) A
where rownumber> 40
原理:先把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录
这种方法和oracle中的一种分页方式类似,不过只支持2005版本以上的
第四种:
存储过程查询
创建存储过程
alter procedure pageDemo
@pageSize int,
@page int
AS
declare@temp int
set@temp=@pageSize*(@page- 1)
begin
select top(select@pageSize)* from test where id not in(select top(select@temp) id from test) order by id
end
执行存储过程
exec 10,5
好了,文章到这里就结束啦,如果本次分享的数据库分页查询sql语句和在oracle数据库中的分页SQL语句怎么写问题对您有所帮助,还望关注下本站哦!