浏览 9786 次
锁定老帖子 主题:分页查询的SQL语句,出现重复记录!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-29
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排的话就不会出现这个问题 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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排的话就不会出现这个问题 sql语句写的很不好,建议花时间补补sql,关系代数 |
|
返回顶楼 | |
发表时间: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_ <= ? |
|
返回顶楼 | |
发表时间: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_ > 两个rownum所处的位置不一样,怎么会产生这样的sql ? |
|
返回顶楼 | |
发表时间:2007-01-30
这句语是hibernate生成的,还真不是我写的。二楼同学的意见不错,谢谢了。
|
|
返回顶楼 | |