使用子查询和过滤在 Oracle 中选择前 10 条记录
在 Oracle 数据库中,可以使用子查询和过滤技术来选择按特定列排序的前 10 条记录。可以修改最初用于选择所有匹配记录的查询以包含此要求。
为了解决返回“随机”记录的问题,可以使用 ROWNUM 子句(即 LIMIT 子句的 Oracle 等效项)。
修改后的查询:
<code class="language-sql">SELECT * FROM ( SELECT DISTINCT APP_ID, NAME, STORAGE_GB, HISTORY_CREATED, TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE FROM HISTORY WHERE STORAGE_GB IS NOT NULL AND APP_ID NOT IN ( SELECT APP_ID FROM HISTORY WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009' ) ORDER BY STORAGE_GB DESC ) WHERE ROWNUM <= 10;</code>
此查询首先使用子查询检索符合条件的记录。然后,它应用 ROWNUM 子句,根据排序标准从结果数据集中选择前 10 条记录。
性能注意事项:
如果处理大型数据集时查询性能较慢,请考虑对子查询谓词使用 NOT EXISTS 而不是 NOT IN。当子查询包含大量记录时,NOT EXISTS 的效率可能更高。
以上是如何使用子查询和过滤选择前 10 条 Oracle 记录?的详细内容。更多信息请关注PHP中文网其他相关文章!