oracle left join 分页数据重复问题
2016-11-17 08:43
459 查看
问题描述:使用 Oracle 的多分页查询语句,不同页面之间出现数据重复,但是数据库的数据是正确的,查询全部的时候也能显示出来。
sql实例:SELECT * FROM(SELECT ROWNUM RN,TA.* FROM(SELECT A.*,B.* FROM
TALBE_A A LEFT JOIN TABLE_B B ON A.ID= B.A_ID WHERE A.NAME='King' ORDER BY A.AGE DESC)TA WHERE ROWNUM <= '20' )WHERE RN >= '10'
(注释:A.AGE不是唯一字段,会发生变化)
原因:在没有使用排序sql的时候,分页返回的数据可能是按顺序的,也可能是杂乱无章的,这都取决与数据的存储位置。
在分页查询过程中,如果数据的物理位置发生了改变,就可能会引起分页数据重复的现象。 所以,要正确使用分页查询,sql语句中必须有排序条件.有排序条件的时候,仍然会出现数据重复的现象,出现这种情况的原因是因为排序列值的不唯一性。
Oracle这里使用的排序算法不具有稳定性,
也就是说,对于键值相等的数据,这种算法完成排序后,不保证这些键值相等的数据保持排序前的顺序。
解决:1.sql语句中需要有排序条件。
2.排序条件如果没有唯一性,那么必须在后边跟上一个唯一性的条件,比如主键。
假设 A.ID 唯一,更改后的sql如下:
SELECT * FROM(SELECT ROWNUM RN,TA.* FROM(SELECT A.*,B.* FROM
TALBE_A A LEFT JOIN TABLE_B B ON A.ID= B.A_ID WHERE A.NAME='King' ORDER BY A.AGE DESC,A.ID)TA WHERE ROWNUM <= '20' )WHERE RN >= '10'
sql实例:SELECT * FROM(SELECT ROWNUM RN,TA.* FROM(SELECT A.*,B.* FROM
TALBE_A A LEFT JOIN TABLE_B B ON A.ID= B.A_ID WHERE A.NAME='King' ORDER BY A.AGE DESC)TA WHERE ROWNUM <= '20' )WHERE RN >= '10'
(注释:A.AGE不是唯一字段,会发生变化)
原因:在没有使用排序sql的时候,分页返回的数据可能是按顺序的,也可能是杂乱无章的,这都取决与数据的存储位置。
在分页查询过程中,如果数据的物理位置发生了改变,就可能会引起分页数据重复的现象。 所以,要正确使用分页查询,sql语句中必须有排序条件.有排序条件的时候,仍然会出现数据重复的现象,出现这种情况的原因是因为排序列值的不唯一性。
Oracle这里使用的排序算法不具有稳定性,
也就是说,对于键值相等的数据,这种算法完成排序后,不保证这些键值相等的数据保持排序前的顺序。
解决:1.sql语句中需要有排序条件。
2.排序条件如果没有唯一性,那么必须在后边跟上一个唯一性的条件,比如主键。
假设 A.ID 唯一,更改后的sql如下:
SELECT * FROM(SELECT ROWNUM RN,TA.* FROM(SELECT A.*,B.* FROM
TALBE_A A LEFT JOIN TABLE_B B ON A.ID= B.A_ID WHERE A.NAME='King' ORDER BY A.AGE DESC,A.ID)TA WHERE ROWNUM <= '20' )WHERE RN >= '10'
相关文章推荐
- Oracle Order By后导分页数据重复问题解决办法。
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- oracle 分页查询数据重复问题
- oracle分页查询数据重复问题
- oracle分页查询数据重复问题的解决
- 教您如何解决oracle分页查询数据重复问题
- oracle分页查询数据重复问题、分页排序陷阱
- oracle分页查询数据重复问题
- oracle分页查询数据重复问题的解决
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- Oracle分页查询排序数据重复问题
- oracle分页查询数据重复问题
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- 关于 Oracle分页数据重复的问题
- oracle分页查询数据重复问题的解决
- 如何解决oracle分页查询数据重复问题
- Oracle 分页数据重复的问题
- oracle分页数据重复问题
- 数据库分页时order by排序不唯一,分页出现重复数据问题