2017-08-15 8 views
-1

私は82行(table1から)の列を持っており、別の表(table2)とは異なる値を持つ76行だけを更新したいと考えています。 6つの特定の行を避ける(1,10,38,39,46,77)。これらの行をNULL値のままにします。列内の特定の行を更新する

私はその後、唯一の1(私は私のTABLE1

Begin 
For x in my_cur loop 
    Update table1 
    Set my_col = x.acct_num 
    Where rnum not in ('1', '10', '38', '39', '46', '77'); 
end loop; 
End; 

を更新しようとしました。しかし、私は同じ値で、これらの行を更新してしまった私の表2から

Cursor my_cur 
Is 
    Select * from table2 

をすべて76行を保存するために、カーソルを使用acct_numから76行すべて)。

私は76行に異なるのacct_numを入力すると、私のテーブル2

と同じ順序で、私は、少なくともスキップして何行必ず持っているそれらの両方でROWNUMを追加しました。どのようにそれを行うにはどのようなアイデア?ありがとう。

答えて

0

更新クエリでは、forループであるため、table1ループからのacct_numの最後の値がtable2のすべての行に更新されます。

table1とtable2を結合する共通の列がwhere条件で使用する必要があります。

Begin 
For x in my_cur loop 
    Update table1 
    Set my_col = x.acct_num 
    Where table1.common_column = x.common_column and 
rnum not in ('1', '10', '38', '39', '46', '77'); 
end loop; 
End; 

この追加の句はurクエリーを解決できます。

関連する問題