【发布时间】:2018-09-27 21:48:23
【问题描述】:
下面是我用来获取select查询返回结果的最后一条记录的sql查询(oracle)。这是最佳方式吗?
SELECT HAZMAT_PLACARD_NOTATION
INTO v_pcn
FROM HAZMAT_CLASS_IRF
WHERE HAZMAT_CD = p_stcc_cd and ROWID = (SELECT MAX(ROWID) FROM HAZMAT_CLASS_IRF WHERE HAZMAT_CD = p_stcc_cd);
以下是选择查询的示例结果集,其中 HAZMAT_CD = 4920111 但是应该检索 HAZMAT_PLAYCARD_NOTATION 值 SPONTANEOUSLY COMBUSTIBLE 的最后一行。这就是目标
【问题讨论】:
-
我认为你可以使用
SELECT TOP 1和ORDER BY ROWID DESC- 但我不确定在 Oracle 中;)。 -
我认为你不能在这里使用
ORDER BY。这个查询对我来说似乎没问题。 -
是的 TOP 1 在 oracle 中不起作用
-
注意
ROWID,它的顺序并不代表插入的顺序(见:dba-oracle.com/t_oracle_find_last_row.htm) -
如果没有可用的列来确定结果集的最新条目,解决办法是什么?