关于这个问题,Oracle 平台没有给出任何解决方案/答案。 在 SQL 查询中选择第 N 条记录
没有排序或分组或 where 子句。根据插入的记录排序。
原因是,我的应用程序日志指出记录号 7、34、46 正在引发错误。有什么正确的存档方法吗?
提前谢谢。
关于这个问题,Oracle 平台没有给出任何解决方案/答案。 在 SQL 查询中选择第 N 条记录
没有排序或分组或 where 子句。根据插入的记录排序。
原因是,我的应用程序日志指出记录号 7、34、46 正在引发错误。有什么正确的存档方法吗?
提前谢谢。
据我所知,该链接中接受的答案(几乎)对 Oracle 完全有效:
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS "RowNumber"
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE "RowNumber" = 5;
Oracle 有一个遵循此语法的分析函数 ROW_NUMBER()。我将列别名的单引号更改为双引号,但我认为其他一切都很好。
更新:
至于根据插入时间检索第 N 条记录,您不能依赖 Oracle 为您维护插入顺序。如果您不指定排序顺序,则无法保证您的结果将以什么顺序返回。如果您有一个始终由序列填充的主键,则可以使用它来排序。或者,您可以在插入时填充时间戳列并使用它来排序。长话短说,如果不指定排序顺序,您将无法进行有意义的第 N 条记录查询。