Oracle 将一张表的数据更新到另一张表
来源:互联网 发布:淘宝优惠券秒杀系统 编辑:程序博客网 时间:2024/06/04 17:41
- 需求
有表成绩T1,记录学生成绩,表T2是一张加分的表,现在用表T2给少数名族学生加分。 - 表成绩表T1
PID SCORE ISMINORITY---- ---------- ---------- 1 670 N 2 620 N 3 600 N 4 520 Y 5 480 N 6 568 Y
- 表T2(加分表)
PID ADD_SCORE---- ---------- 3 21 4 100 6 100
- 写法1(可能有潜在error)
MERGE INTO T1 USING T2ON (T1.PID = T2.PID)WHEN MATCHED THEN UPDATE SET T1.SCORE = T1.SCORE + T2.ADD_SCORE WHERE T1.ISMinority = 'Y';
写法1有潜在error是因为Merge
不能多次更新被更新表(即T1)的同一条记录,如果T2有重复的数据,比如两条pid为4的记录。那么写法1将报错 ORA-30926: unable to get a stable set of rows in the source tables
但是如果T2有两条pid为3则不会报错
- 升级版写法
MERGE INTO T1 USING (SELECT PID, MAX(add_score) add_score FROM t2 GROUP BY PID) T2ON (T1.PID = T2.PID)WHEN MATCHED THEN UPDATE SET T1.SCORE = T1.SCORE + T2.ADD_SCORE WHERE T1.ISMinority = 'Y';
- 完整代码
CREATE TABLE T1(PID INT, SCORE INT, ISMINORITY VARCHAR(1));CREATE TABLE T2(PID INT, ADD_SCORE INT);INSERT INTO T1 VALUES(1,670,'N');INSERT INTO T1 VALUES(2,620,'N');INSERT INTO T1 VALUES(3,600,'N');INSERT INTO T1 VALUES(4,520,'Y');INSERT INTO T1 VALUES(5,480,'N');INSERT INTO T1 VALUES(6,568,'Y');INSERT INTO T2 VALUES(3,21);INSERT INTO T2 VALUES(4,21);INSERT INTO T2 VALUES(6,21);COMMIT;SELECT * FROM T1;MERGE INTO T1 USING T2ON (T1.PID = T2.PID AND T1.ISMinority = 'Y')WHEN MATCHED THEN UPDATE SET T1.SCORE = T1.SCORE + T2.ADD_SCORE;COMMIT;
0 0
- Oracle 将一张表的数据更新到另一张表
- oracle 将一张表的数据插入到另一张表
- 更新一张表数据到另一张表sql
- oracle中用一张表的数据更新另一张表的数据(快速稳定)
- 循环将一张表的数据添加到另一张表,重复数据不添加
- SQL Server大数据导入导出:将一张表的数据导入到另一张表
- 根据一张表去更新另一张表的数据
- SQL使用一张表的数据更新另一张表
- 查询一张表的数据去更新另一张表
- 根据某一条件,从一张表更新数据到另一张表的相应列
- MySQL数据库中,将一张表的数据插入到另一张表的各种情况
- 如何将一张表的数据复制到另一张表(sql yog)
- mysql 将一张表的数据插入到另一张表
- mysql 如何用一条SQL将一张表里的数据插入到另一张表
- mysql插入一张表里的数据到另一张表
- oracle 把一张表的数据放入另一张表
- Oracle 将一张表中的数据插入到另一张新表
- Oracle触发器实现插入或更新一张表数据同时插入或更新另一张表
- Nginx和Tomcat结合使用负载均衡配置
- LCA之ST算法模板 poj-1986
- java实现数据库备份和恢复源码---解决路径带空格引发的问题
- [Codeforces 615E] Hexagons (找规律)
- SSM整合之配置文件
- Oracle 将一张表的数据更新到另一张表
- 大咖,我能转行做UX设计师吗?
- vue 混合 基础篇
- C#之MySql查询
- java格式化----java.util.Formatter
- Linux命令之查看cpu个数_核数_内存总数
- ubuntu 安装opencl失败笔记
- 单片机I/O口推挽与开漏输出详解(力荐)
- Centos7-Lvs+Keepalived架构