2017-08-15 78 views
-1

我有一列有82行(来自表1),我想用另一个表(表2)中的不同值更新其中的76行。避免6个特定行(1,10,38,39,46,77)。用空值留下这些行。更新列中的特定行

我用光标将所有76行节约从我的表2

Cursor my_cur 
Is 
    Select * from table2 

然后我试图更新我的表1

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; 

但我结束了相同的值更新这些行(只有1个acct_num到所有76行)。

我想在我的表2

我在他们两人的加入ROWNUM有至少一定要跳过哪些行进入不同acct_num〜76行,以相同的顺序。任何想法如何做到这一点?谢谢。

回答

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; 

在where子句中的这个额外的过滤器可以解决你的查询。