gpt4 book ai didi

sql - Oracle rownum 返回错误结果

转载 作者:行者123 更新时间:2023-12-04 23:48:37 26 4
gpt4 key购买 nike

我正在尝试查询以仅返回表中的最新行。

最初我在查询中使用了 max(id)
但是当我使用序列并且我的环境是聚集的时,我不能依赖序列作为它的顺序。
所以我决定根据创建时间排序并使用 rownum 选择顶行。

我用过类似的东西

SELECT  A.id
FROM Table_A, Table_B B
WHERE A.status = 'COMPLETED'
AND B.name = 'some_name'
AND A.id = B.id
AND rownum = 1
order by A.Creation_Time;

这一些如何返回我一些错误的结果说 42145。
如果我删除 rownum condtn,则最高记录是不同的,比如 45343;

最佳答案

使用时 rownumorder by ,您需要使用子查询。这与 where 的评估顺序有关。和 order by .所以,试试这个:

SELECT t.*
FROM (SELECT A.id
FROM Table_A JOIN
Table_B B
ON A.id = B.id
WHERE A.status = 'COMPLETED' AND B.name = 'some_name'
ORDER BY A.Creation_Time
) ab
WHERE rownum = 1;

我应该补充:Oracle 12 支持 fetch first 1 row only ,这更方便:
  SELECT A.id
FROM Table_A JOIN
Table_B B
ON A.id = B.id
WHERE A.status = 'COMPLETED' AND B.name = 'some_name'
ORDER BY A.Creation_Time
FETCH FIRST 1 ROW ONLY;

关于sql - Oracle rownum 返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28095621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com