sql - 限制从 Oracle 中的 SQL 查询返回的记录

标签 sql oracle

我负责每 x 秒检查一次 Oracle DB 表以查看是否有新数据要处理的应用程序之一(其他实时应用程序正在填充它)。

我们的新客户业务流程迫使我们实时在同一时间(比如 10 000)中填充此表,但每天只有几次。下次我的应用程序检查是否有任何要处理的内容时,它会遇到 10 000 条记录并尝试进行处理。

它的设计不是很好,而且它的扩展性不够好。快速修复将限制应用程序从 Oracle 获取的记录数量,下次它会再选择 50(或其他)等。

如何在 Oracle SQL 中限制返回的记录数?订单很重要!

  select * 
    from cool_table where date >= to_date('200901010000', 'YYYYMMDDhh24mi') 
order by seq_nr, entry_dts;

最佳答案

select * from
(select c.* from cool_table c
   where date >= to_date('200901010000', 'YYYYMMDDhh24mi') 
   order by seq_nr, entry_dts)
where rownum < 50

您需要确保在 rownum 过滤之前完成排序(否则它将采用它找到的前 50 行,然后对它们进行排序)

关于sql - 限制从 Oracle 中的 SQL 查询返回的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/486452/

相关文章:

c# - 如何在 C# 和 MS SQL 中向参数化查询添加 "select all"值

sql - 将 Excel 电子表格作为表格错误导入 sql

java - SQL Server 将 nvarchar 值 '2018-10-03' 转换为数据类型 int 时出现异常失败

oracle - 如何在oracle 10g 中为存储过程创建错误日志?

c# - 关键字附近的语法不正确

mysql - 尽管使用 IFNULL (MySQL),SQL 查询也不返回 NULL 值

sql - Oracle SQLPlus 列出多个表中带有 'having' 的值

sql - 查找列是否具有唯一约束

database - 学习 Cocoa 数据库开发的推荐资源?

oracle - PL/SQL 中的 BEGIN - END block 原子事务