1

followステートメントを実行するとエラーメッセージが表示されます。

UPDATE dept d 
SET city = ALL (SELECT city FROM locations l 
                WHERE d.location_id = l.location_id);

ALL演算子を取り除くと、成功します。

UPDATE dept d 
SET city = (SELECT city FROM locations l 
            WHERE d.location_id = l.location_id);

誰かが「ALL」演算子とは何か教えてもらえますか?

4

1 に答える 1

1

ALL予約語はselectステートメントのクエリ用ですが、UPDATEステートメントでは使用できません。

すべてのOracleDocを使用したサブクエリの引用:

比較演算子の後に続く必要があるALLという単語は、「サブクエリが返す列のすべての値に対して比較がTRUEの場合、TRUEを返す」ことを意味します。</ p>

つまり、=記号は割り当てとしてではなく、比較として使用する必要があります。

サブクエリが複数の行を返すことが予想される場合は、maxまたはrownunで結果を制限できます。

UPDATE dept d 
SET city = (SELECT max( city ) FROM locations l 
            WHERE d.location_id = l.location_id);
于 2012-07-23T16:00:09.623 に答える