0

根据此链接rownum在查询中使用时,按以下操作顺序调用它。

The FROM/WHERE clause goes first.
ROWNUM is assigned and incremented to each output row from the FROM/WHERE clause.
SELECT is applied.
GROUP BY is applied.
HAVING is applied.
ORDER BY is applied.

我想知道AND将在此列表中归类的位置。是否会与评估同时进行WHERE?如果WHERErownumAND没有怎么办?

4

2 回答 2

1

AND 在这方面没有任何作用。在构造结果集时,rownum 分配给最外层排序之前的结果。对 ROWNUM 进行过滤是从执行计划的更深层次反馈结果的硬性停止。因此,例如,类似的构造where rownum > 5不会返回任何行。

希望这会有所帮助。如果不是,请详细说明您的问题和/或解释您问的原因。有些替代品有时更好,例如row_number().

于 2014-01-20T17:26:33.590 回答
-1

我只是有一个更新不起作用,其中 field_value 不为 null 并且 rownum = 1。因为 rownum = 1 是针对具有 field_value = null 的行,这是它累返回的行,然后在更新中没有发生任何操作。

因此,在 Where 子句中还有一个操作顺序。需要将 () 放在它周围或使其成为子查询,以确保 rownum 在 where 原因的其他部分的结果上。

对于我的情况,我使用 distinct 而不是 rownum = 1 。

于 2014-09-04T20:14:23.160 回答