【问题标题】: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 以至少确定要跳过哪些行。任何想法如何做到这一点?谢谢。

【问题讨论】:

    标签: oracle plsql plsqldeveloper toad


    【解决方案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 子句中的这个附加过滤器可以解决你的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 2014-04-03
      相关资源
      最近更新 更多