我正在努力将 SQL Server 中的存储过程转换为 Oracle,以使我们的产品与之兼容。
我有一些查询语句,根据时间戳返回某些表的最新记录:
SQL Server:
SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
=> 这将返回我最近的记录
但是 Oracle:
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
它可以工作。但对我来说,这听起来像是一个可怕的黑客攻击,特别是如果涉及的表中有很多记录。
那么,最好的方法是什么?