使用另一个表中的数据更新一个表的记录

时间:2017-08-21 04:45:28

标签: sql oracle11g merge-statement

我有两张桌子。

表1:员工

EID Name    Gender
1   Peter   M
2   John    M
3   Melissa F

表2:薪水

EID Salary
1   6000
2   8000
3   10000

我需要将男性员工的工资提高10%,女性员工的工资提高15%。

以下是我使用但在Oracle11g中无法获得所需结果的查询。

merge into salary
using employees on 
salary.eid = employees.eid
when matched then
update set
    salary.salary = 1.1*salary where employee.gender = 'M' ,
    salary.salary = 1.15*salary where employee.gender = 'F';

我收到以下错误消息:

  

SQL错误:ORA-00969:缺少ON关键字   00969. 00000 - “缺少ON关键字”   *原因:
  *操作:

2 个答案:

答案 0 :(得分:1)

在提供的代码段中,您需要考虑两件事。

  1. ON子句应始终伴随"()"。
  2. UPDATE语句中的WHERE子句不正确。希望这段代码有所帮助。

    MERGE INTO SALARY USING EMPLOYEES 
    ON (salary.eid = employees.eid)
    WHEN MATCHED THEN
      UPDATE
      SET salary.salary = DECODE(employee.gender,'M',1.1*salary,'F',1.15*salary) ;
    

答案 1 :(得分:0)

试试这个

Update salary 
set salary.salary=salary.salary*(select case t.gender when 'M' then 1.1 When 'F' then 1.15 end from employees t where t.eid= salary.eid)
相关问题