表的插入、更新、删除、合并操作_14_ 通过表关联更新多个表多个字段

                           通过表关联更新多个表多个字段

需求描述

需求:更新emp表里的sal字段的值为temp表里的sal乘以1.5,同时更新temp表里ename为emp表里的值,匹配条件是两个表的deptno.

解决方法:通过Update的多个set同时对不同表的不同字段进行更新。

注: 数据库数据集SQL脚本详见如下链接地址

员工表结构和数据初始化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;

执行结果

表的插入、更新、删除、合并操作_14_ 通过表关联更新多个表多个字段

注:Oracle和SQL Server里暂未发现该语法.

上一篇:ORACLE的SQL练习---8. 窗口函数OVER()


下一篇:oracle储存过程--存储过程