分页查询sql
常⽤分页查询sql
先介绍⼀个⾯试题,查询表中第200-300条数据。应⽤既是分页查询,先通过⼦查询对数据进⾏标记,如oracle通过rownum进⾏标记,再取⼀个区间的数据。
⼀,ORACLE
关键字 rownum
规则:
select * from (select a.*,rownum rc from 表名 where rownum<=endrow) a >=startrow
或 SELECT *
FROM (SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40)
WHERE RN > 20
其中的SELECT * FROM TABLE_NAME表⽰没有进⾏分页时的sql查询语句,⽽ROWNUM 和RN 限定了查询数据的范围。
实例:
select * from ( select OL.*, rownum rc from OffsiteOutreachTeam_List OL where rownum <= 48 ) OL >= 9
SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM OffsiteOutreachTeam_List) A WHERE ROWNUM <= 40) WHERE RN > 20
select * from ( select OL.*, rownum rc from OffsiteOutreachTeam_List OL) where rc >= 9 and rc <= 20
select * from ( select OL.*, rownum rc from OffsiteOutreachTeam_List OL) where rc between 10 and 20
注意:可以通过排序,避免不同页出现重复的数据。
01. SELECT * FROM
02. 2 (
03. 3 SELECT A.*, ROWNUM RN
04. 4 FROM (SELECT ID, OWNER, OBJECT_NAME FROM TEST WHERE OWNER IS NOT NULL ORDER BY OWNER, ID) A
05. 5 WHERE ROWNUM <= 20
06. 6 )
07. 7 WHERE RN >= 11;
⼆,MySQL
关键字:limit
MySQL数据库分页 Select * from 表名 limit startrow,pagesize (Pagesize为每页显⽰的记录条数)
三,SQL Servel
关键字:top
3.SQL Server 2000数据库分页 Select top pagesize * from 表名 where 列名 not in(select top pagesize*page 列名 from 表名 order by列名) order by列名
4.SQL Server 2005数据库分页 Select * from (select 列名,row_number() over(order by 列名1) as 别名from 表名) as t where t.列名
1>=startrow and t.列名1<=endrowsql查询面试题及答案
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论