Oracle查询中rownum与Order by查询的关系
在开发应用的时候,把数据按照一定的规则排序后再取前几条数据这种操作是很平常的事情。我们在Oracle中常用的就是order by,然后取得rownum小于多少的数据这种方法。不过如果对Oracle不熟悉,也许就会发现你写的SQL语句检索出来的值不正确,这个是为什么呢。
因为Oracle在检索的时候,会首先把数据都检索出来,然后在排序段中进行排序。假如你有一个SQL语句如下所示。
SELECT
EMP_NO
FROM
EMP
WHERE
ROWNUM < 10
ORDER BY
EMP_NO
在检索的时候,会首先把数据检索出来,也就是把EMP表数据都检索出来,然后再Order by排序操作。因为ROWNUM 数据是在排序前就检索出来的了,所以不能利用ROWNUM来取得排序后的前10条操作。那么应该如何操作呢。其实很简单,利用子查询,先排序,再取 ROWNUM。如下所示
SELECT
EMP_NO
FROM
(
SELECT
EMP_NO
FROM
EMP
ORDER BY
EMP_NO
)
WHERE
ROWNUM < 10
这样你就会发现你最后可以检索到你需要的结果了
分享到:
相关推荐
解决Oracle分页查询中排序与效率问题解决Oracle分页查询中排序与效率问题解决Oracle分页查询中排序与效率问题解决Oracle分页查询中排序与效率问题
Oracle 分页实例 带分页控件用法 Oracle 实现数据列表分页。
本文将结合作者近日工作中,在ORACLE数据库分页查询时,遇到一个小问题,为大家讲解如何解决Oracle分页查询中排序与效率问题。
java实现oracle分页策略完整版,可当做参考类使用,有详细注释,适合初学者。
oracle分页存储过程,oracle分页存储过程
Oracle分页查询Oracle分页查询Oracle分页查询Oracle分页查询
Oracle分页(limit方式的运用)Oracle分页(limit方式的运用)
ORACLE分页查询效率
oracle分页查询语句sql
oracle分页查询并返回总记录数据的存储过程
完整的java+oracle 分页代码,供初学者使用
oracle&jsp简单实现分页,注意到Oracle包
oracle分页,比较简单很好懂,能够清楚知道oracle分页机制
Oracle的分页查询语句以及Oracle分页的存储过程
Oracle分页存储过程,里面包含C#调用代码实例;
Oracle 存储过程 Oracle分页 oracle分页
Oracle的SQL分页实践
Oracle All 添加 修改 更新 Oracle分页 emp表 存储过程实现
Oracle分页详解