【发布时间】:2013-02-12 01:33:58
【问题描述】:
我很难将存储过程从 SQL Server 转换为 Oracle,以使我们的产品与之兼容。
我有一些查询会根据时间戳返回某些表的最新记录:
SQL 服务器:
SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
=> 这将返回我最近的记录
但是甲骨文:
SELECT *
FROM raceway_input_labo
WHERE rownum <= 1
ORDER BY t_stamp DESC
=> 不管ORDER BY 语句,这将返回最旧的记录(可能取决于索引)!
我以这种方式封装了 Oracle 查询以满足我的要求:
SELECT *
FROM
(SELECT *
FROM raceway_input_labo
ORDER BY t_stamp DESC)
WHERE rownum <= 1
它有效。但这对我来说听起来像是一个可怕的 hack,尤其是当我在相关表中有很多记录时。
实现这一目标的最佳方法是什么?
【问题讨论】:
-
您在上一个查询中所做的是正确的。您选择记录的有序列表的第一行。简单查询封装。
-
@a_horse_with_no_name 你的意思是清楚地记录在这个 404 错误中。
-
@anthonybrice:谢谢。 Oracle 将其所有 URL 更改为手册。最新链接为:docs.oracle.com/cd/E11882_01/server.112/e41084/…
标签: sql oracle sql-order-by rownum