orcale rownum 分页查询的数据顺路混乱
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了orcale rownum 分页查询的数据顺路混乱相关的知识,希望对你有一定的参考价值。
select rownum ,a.* from vw_pricelist_bug_rownum a where
rownum>=0 and rownum <=10
第一查询有莲花白。
select rownum ,a.* from vw_pricelist_bug_rownum a where
rownum <=10
第二次查询没有莲花白。
请问各位高手,知道这是什么原因吗?
orcale rownum 分页查询的数据顺序混乱
我想知道,为什么这两个查询的结果会不一样。原因。
SELECT *
FROM (SELECT ROWNUM AS rowno, t.*
FROM emp t
WHERE hire_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')
AND TO_DATE ('20060731', 'yyyymmdd')
AND ROWNUM <= 20) table_alias
WHERE table_alias.rowno >= 10;追问
我想知道,为什么这两个查询的结果会不一样。原因。
追答ruwnum 是什么 ?
是返回数据的结果集中,数据的行号?这么说应该没有问题吧。
你没有排序,谁能保证,你每次查询的 的 结果集中 的数据 顺序 收一致。
总之,你就不能那样用。
数据库分页查询
分页语句:
Oracle:
--这样的分页查询方式不不过针对单表的简单查询,对于最内层查询是复杂的
--多表联合查询或最内层查询包括排序的情况一样有效
SELECT?*?FROM?(?
SELECT?ROWNUM?RN?,?T.*??FROM?
(SELECT?*?FROM?FTNEMR.PATIENT_VISIT)?T?WHERE?ROWNUM?<=?40?)?
WHERE?RN?>=?21
ORDER?BY?PATIENT_ID;
--这样的方式比上面的方式要性能要低非常多
SELECT?*?FROM?(?
SELECT?ROWNUM?RN,?T.*?FROM?
(SELECT?*?FROM?FTNEMR.PATIENT_VISIT)?T?)?
WHERE?RN?BETWEEN?21?AND?40?
ORDER?BY?PATIENT_ID
SQL?Server:
--查询出第21条至第30条数据?--
SELECT?TOP?10?*?FROM?dbo.HIS_BA1???
WHERE?FID?NOT?IN(SELECT?TOP?20?FID?FROM?dbo.HIS_BA1?ORDER?BY?FID)
Mysql:
SELECT?*?FROM?table?LIMIT?5,10;?//?检索记录行?6-15