Sql 使用另一个表中的数据更新一个表的记录
我有两张桌子 表1:雇员Sql 使用另一个表中的数据更新一个表的记录,sql,oracle11g,merge-statement,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 w
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:关键字上缺少
96900000-“关键字上缺少”
*原因:*行动:
在提供的代码片段中,有两件事需要考虑
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) ;
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)
这里不需要SELECT语句。我们可以使用CASE或解码。