【问题标题】:Oracle-update multiple row value where the the id column equals specific valuesOracle-更新多行值,其中 id 列等于特定值
【发布时间】:2013-05-19 07:59:28
【问题描述】:

我是 oracle 的新手,我想更新列 id = 1 , 2 的多行值。

我试过这个:

update Tester 
set employee_phone_number = ( 0789456123,0789456321)  
where employee_id in (1,2); 

但它给了我“缺少右括号”

任何帮助,请提前致谢。

【问题讨论】:

  • 是否打算将employee_phone_number 设置为id = 1 所在行的“0789456123”和id = 2 所在行的“0789456321”? employee_phone_numberNUMBER 吗?还是VARCHAR2
  • 您是将电话号码存储为数字还是字符串?将它们存储为数字似乎是一个错误,因为您丢失了“0”前缀。
  • 将 id = 1 的行的employee_phone_number 设置为“0789456123”,将id = 2 且employee_phone_number 为NUMBER 的行设置为“0789456321”

标签: oracle


【解决方案1】:

另一种方法:

merge into
  tester
using (
  select 1 id,'0123456785' employee_phone_number from dual union all
  select 2 id,'0123456786' employee_phone_number from dual) new_values
on (
  tester.id = new_values.id)
when matched then update 
  set employee_phone_number = new_values.employee_phone_number;

更多的单词,但只允许在一个地方指定值,并扩展以允许在 id 不存在的地方插入。

http://sqlfiddle.com/#!4/8fc86/3

【讨论】:

    【解决方案2】:

    试试这个:

    update Tester 
    set employee_phone_number = CASE WHEN employee_id = 1 THEN 0789456123
                                     WHEN employee_id = 2 THEN 0789456321
                                END
    where employee_id in (1,2);
    

    【讨论】:

      猜你喜欢
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多