首页 >数据库 >mysql教程 >订购后如何限制Oracle查询中的行?

订购后如何限制Oracle查询中的行?

Linda Hamilton
Linda Hamilton原创
2025-01-25 08:41:12310浏览

How to Limit Rows in Oracle Queries After Ordering?

限制结果集中的Oracle查询

>

oracle的ROWNUMpseudoColumn与MySQL的LIMIT子句不同; 在处理ROWNUM>之前,分配了>>。 因此,在订购后直接使用ORDER BY不会限制行ROWNUM。为了实现这一目标,请使用一个子查询:

该方法首先按薪水(
<code class="language-sql">SELECT *
FROM (SELECT * FROM emp ORDER BY sal DESC)
WHERE ROWNUM <= n;</code>
)降序订购

>表,然后外部查询使用emp>将输出限制为top lows。 sal对于需要上限和下边界的更复杂的场景,需要一个嵌套的子查询:ROWNUM n

Oracle 12c及以后的
<code class="language-sql">SELECT *
FROM (SELECT a.*, ROWNUM rnum
      FROM (SELECT * FROM your_table ORDER BY your_column) a
      WHERE ROWNUM <= :MAX_ROW_TO_FETCH)
WHERE rnum >= :MIN_ROW_TO_FETCH;</code>

Oracle 12c(以及后来的版本)使用>和

提供更简化的语法:

FETCH FIRST OFFSET这将结果设置直接限制为按

订购后的前10行。 要指定偏移量(例如,跳过前20行并检索下一个10),请使用
<code class="language-sql">SELECT *
FROM sometable
ORDER BY name
FETCH FIRST 10 ROWS ONLY;</code>
>子句:

> name OFFSET请参阅官方的Oracle文档以获取全面的示例和绩效优化策略。

以上是订购后如何限制Oracle查询中的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn