通过表关联更新多个表多个字段
需求描述
需求:更新emp表里的sal字段的值为temp表里的sal乘以1.5,同时更新temp表里ename为emp表里的值,匹配条件是两个表的deptno.
解决方法:通过Update的多个set同时对不同表的不同字段进行更新。
注: 数据库数据集SQL脚本详见如下链接地址
SQL代码
-- Mysql:
TRUNCATE TABLE temp;
INSERT INTO temp(deptno,deptname,loc,empno,ename,sal)
SELECT 50,'Production','Nanjing',7369,'SMITH2',1000
BEGIN;
SELECT empno,ename,sal,'From_emp' as Table_Name FROM emp WHERE empno=7369
UNION
SELECT empno,ename,sal,'From_temp' as Table_Name FROM temp WHERE empno=7369;
UPDATE emp a,temp b
SET a.sal=b.sal*1.5 ,b.ename=a.ename
WHERE a.empno = b.empno;
UPDATE emp a
INNER JOIN temp b
ON a.empno = b.empno
SET a.sal=b.sal*1.5 ,b.ename=a.ename;
SELECT empno,ename,sal,'From_emp' as Table_Name FROM emp WHERE empno=7369
UNION
SELECT empno,ename,sal,'From_temp' as Table_Name FROM temp WHERE empno=7369;
ROLLBACK;
执行结果
注:Oracle和SQL Server里暂未发现该语法.