精华帖 (1) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-17
原先robin的文章:
http://www.hibernate.org.cn/58.html 现在在论坛里面怎么找到? |
|
返回顶楼 | |
发表时间:2006-11-17
ordey by的字段有很多重复,从这句看就已经存在不满足业务需求的可能了,不光是oracle,就算是其它数据库,都是一样的结果.
一厢情愿地猜测数据库会以固定的顺序来返回结果是不可取的. 在多用户环境下,就算以上问题不存在,同一条记录也会产生出多次在不同页面中出现的类似结果. |
|
返回顶楼 | |
发表时间:2006-11-22
winterchipmunk 写道 实践出真知,试一下就知道结果了。我说出错,既有oracle理论指导,又有自己试验的结果。
另外,你可以看一下上面提到的hibernate手册中的scroll的示例,似乎也在表示order by的时候,怎么分页。 xiaoyu 写道 引用 select * from
( select row_.*, rownum rownum_ from ( select * from T_TABLE tTable where tTable.field1 order by tTable.field2 desc ) row_ where rownum <= ?) where rownum_ > ? 我有一个疑问:虽然rownum是在order by之前已经安排好了,但它是不是指仅在一个视图中呢?如果是的话,那这个语句一点都没有错,因为它用的是row_视图的rownum。但真是出错了(其实就是顺序有可能不一样),应该是它的排序算法有问题。 当然如果rownum是不重新分配的话(意思是指在一整个查询中),那就没有得说啦。 It works fine for me, It was tested on Oracle 10g. Oracle add the row number to : ( select * from T_TABLE tTable where tTable.field1 order by tTable.field2 desc ) before sorting. You are right. For second level query: ( select row_.*, rownum rownum_ from ( select * from T_TABLE tTable where tTable.field1 order by tTable.field2 desc ) row_ where rownum <= ? ) Oracle adds other rownum based on the first query results, so the result is good. |
|
返回顶楼 | |