数据库分页查询

 oracle分页查询:

1 select *
2   from (select a.*, rownum rn
3           from (select *
4                   from calendar_info
5                  where uin = '136727'
6                  order by createtime desc) a
7          where rownum <= endIndex)
8  where rn > startIndex

 rowid和rownum的区别:

rowid和rownum都是虚列,但含义完全不同。rowid是物理地址,用于定位oracle中具体数据的物理存储位置,而rownum则是sql的输出结果排序。通俗的讲:rowid是相对不变的,rownum会变化,尤其是使用order by的时候。 

rowid 用于定位数据表中某条数据的位置,是唯一的、也不会改变

rownum 表示查询某条记录在整个结果集中的位置, 同一条记录查询条件不同对应的 rownum 是不同的而 rowid 是不会变的

使用rowid和rownum组合实现分页查询

 1 SELECT *
 2   FROM (SELECT RID
 3           FROM (SELECT R.RID, ROWNUM LINENUM
 4                   FROM (SELECT ROWID RID
 5                           FROM calendar_info
 6                          where uin = '136727'
 7                          order by createtime desc) R
 8                  WHERE ROWNUM <= endIndex)
 9          WHERE LINENUM >= startIndex) T1,
10        calendar_info T2
11  WHERE T1.RID = T2.ROWID;

 

oracle查询结果集的前十条数据:

1 select *
2   from calendar_info
3  where seqno > (select max(seqno) - 10 from calendar_info);
4 select *
5   from (select * from calendar_info order by seqno desc)
6  where rownum < 10;

mysql实现分页查询:

1 select *
2 from (select * from calendar_info where uin = '136727') t limit startIndex,
3 pageSize

 

posted @ 2016-03-01 16:23  YOU_CAN  阅读(368)  评论(0编辑  收藏  举报