我有一个包含82行的列(来自table1),我想用其他表(table2)中的不同值更新其中的76行。避免6个特定行(1,10,38,39,46,77)。保留这些行为空值。
我用光标保存了table2中的所有76行
Cursor my_cur
Is
Select * from table2
然后我尝试更新我的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;
但我最终用相同的值更新这些行(对所有76行只有1个acct_num)。
我想输入不同的acct_num到76行,并且与我的table2中的顺序相同
我在其中添加了rownum,至少要确定要跳过哪些行。有什么想法怎么做?谢谢。
答案 0 :(得分: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子句中的这个附加过滤器可以解决你的查询。