分页查询的SQL话语,出现重复记录
分页查询的SQL语句,出现重复记录!
table1中表有字段(其余字段省)
ID 主键
DATA_UPDATE_TIME 数据更新时间(只存储了年月日)
分页查询的语句如下
select *
from (
select row_.*, rownum rownum_
from ( select p.id from table1 p
order by p.DATA_UPDATE_TIME desc )
row_ where rownum <= )
where rownum_ >
以每页显示10条为例
第一次 rownum <= 10) where rownum_ > 0
第二次 rownum <= 20) where rownum_ > 10
发现有一条记录在两次查询结果中重复出现,不知道问题出在哪里,请忙帮看看。
另:
DATA_UPDATE_TIME 的值有重复,不知道跟它有没有关系。
如果按ID排的话就不会出现这个问题
sql语句写的很不好,建议花时间补补sql,关系代数
两个rownum所处的位置不一样,怎么会产生这样的sql ?
table1中表有字段(其余字段省)
ID 主键
DATA_UPDATE_TIME 数据更新时间(只存储了年月日)
分页查询的语句如下
select *
from (
select row_.*, rownum rownum_
from ( select p.id from table1 p
order by p.DATA_UPDATE_TIME desc )
row_ where rownum <= )
where rownum_ >
以每页显示10条为例
第一次 rownum <= 10) where rownum_ > 0
第二次 rownum <= 20) where rownum_ > 10
发现有一条记录在两次查询结果中重复出现,不知道问题出在哪里,请忙帮看看。
另:
DATA_UPDATE_TIME 的值有重复,不知道跟它有没有关系。
如果按ID排的话就不会出现这个问题
1 楼
andyao
2007-01-29
lenozhi 写道
table1中表有字段(其余字段省)
ID 主键
DATA_UPDATE_TIME 数据更新时间(只存储了年月日)
分页查询的语句如下
select *
from (
select row_.*, rownum rownum_
from ( select p.id from table1 p
order by p.DATA_UPDATE_TIME desc )
row_ where rownum <= )
where rownum_ >
以每页显示10条为例
第一次 rownum <= 10) where rownum_ > 0
第二次 rownum <= 20) where rownum_ > 10
发现有一条记录在两次查询结果中重复出现,不知道问题出在哪里,请忙帮看看。
另:
DATA_UPDATE_TIME 的值有重复,不知道跟它有没有关系。
如果按ID排的话就不会出现这个问题
ID 主键
DATA_UPDATE_TIME 数据更新时间(只存储了年月日)
分页查询的语句如下
select *
from (
select row_.*, rownum rownum_
from ( select p.id from table1 p
order by p.DATA_UPDATE_TIME desc )
row_ where rownum <= )
where rownum_ >
以每页显示10条为例
第一次 rownum <= 10) where rownum_ > 0
第二次 rownum <= 20) where rownum_ > 10
发现有一条记录在两次查询结果中重复出现,不知道问题出在哪里,请忙帮看看。
另:
DATA_UPDATE_TIME 的值有重复,不知道跟它有没有关系。
如果按ID排的话就不会出现这个问题
sql语句写的很不好,建议花时间补补sql,关系代数
2 楼
vaja
2007-01-29
如果order by 不能唯一确定记录的顺序就会出现这个问题。
解决的方法是把分页部分全部拿到最外层进行。
解决的方法是把分页部分全部拿到最外层进行。
select * from ( select row_.*, rownum rownum_ from ( select p.id from table1 p order by p.DATA_UPDATE_TIME desc ) row_ ) where rownum_ > ? and rownum_ <= ?
3 楼
eyejava
2007-01-30
引用
select *
from (
select row_.*, rownum rownum_
from ( select p.id from table1 p
order by p.DATA_UPDATE_TIME desc )
row_ where rownum <= )
where rownum_ >
from (
select row_.*, rownum rownum_
from ( select p.id from table1 p
order by p.DATA_UPDATE_TIME desc )
row_ where rownum <= )
where rownum_ >
两个rownum所处的位置不一样,怎么会产生这样的sql ?
4 楼
lenozhi
2007-01-30
这句语是hibernate生成的,还真不是我写的。二楼同学的意见不错,谢谢了。