更新列中的特定行
Posted
技术标签:
【中文标题】更新列中的特定行【英文标题】:Update specific rows in a column 【发布时间】:2017-08-15 08:26:59 【问题描述】:我有一列有 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 以至少确定要跳过哪些行。任何想法如何做到这一点?谢谢。
【问题讨论】:
【参考方案1】:在您的更新查询中,由于它是一个 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 子句中的这个附加过滤器可以解决你的查询。
【讨论】:
以上是关于更新列中的特定行的主要内容,如果未能解决你的问题,请参考以下文章