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ますか?WHEREに a がrownumあり、ANDがない場合はどうなりますか?

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 原因の他の部分の結果にあることを確認する必要があります。

私の場合、rownum = 1 の代わりに、distinct を使用しました。

于 2014-09-04T20:14:23.160 に答える