NutzCN Logo
问答 nutz自动分页oracle sql问题
发布于 2414天前 作者 danwangwangdan 1869 次浏览 复制 上一个帖子 下一个帖子
标签:
SELECT * FROM (SELECT T.*, ROWNUM RN FROM ( SELECT * FROM v_trade_query  WHERE (f_create_time >= '2017-03-22 08:00:00') AND (f_create_time <= '2018-03-22 08:00:00') AND f_trader_id=252 ORDER BY f_create_time DESC  ) T WHERE ROWNUM <= 100) WHERE RN > 0 

如上所示,这是某一条sql,请问一下 WHERE RN > 0 最后这个判断rownum是否有必要,在我印象中,rownum是不是从1开始计数的呢?

13 回复

你试一下?

是 可以不用的,只不过我不太明白 nutz 为什么要加上 WHERE RN > 0 这个判断,所以来请教一下

那是偏移量, 第一页的时候是0, 第二也就是 pageSize, 第三页就是 pageSize * (pageNumber - 1)

我们是oracle数据库, 我们的数据库管理员对生成的这种嵌套型的语句认为不合理, 在数据库监控awr中相关消耗较高的sql都是类似的嵌套语句,我该怎么解释呢? 如果没有分页可以去掉嵌套吗

自定义OracleJdbcExpert, 实现符合你们自己要求的formatQuery

不分页的时候, 应该没有分页语句吧

select * from (select T.*, rownum rn from (select * from branch_base_info where legal_entity=:1 and br_no=:2) T where rownum < 1 ) where rn > 0 我们的语句是这样的。

fetch的时候?

是的, fetchx方法

哦, 那个方案吧, 自定义OracleJdbcExpert, 如果分页1,大小也是1, 就分页,直接查. 尝试一下?

顺便报个issue吧

添加回复
请先登陆
回到顶部