Oracle与mysql批量新增或修改语法
来源:互联网 发布:如何申请淘宝小号流程 编辑:程序博客网 时间:2024/06/04 17:51
一、Oracle批量更新的merge into语法
MERGE INTO
是Oracle 9i以后才出现的新的功能。
那这个功能 是什么呢?简单来说,就是:“有则更新,无则插入”,用来合并UPDATE和INSERT语句.
通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,
连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。
这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。
示例:
MERGE INTO T T1 --更新的表
USING (视图或表) T2--源表
ON ( T1.a=T2.a)--连接条件
WHEN MATCHED THEN--存在则更新
UPDATE SET T1.b = T2.b
WHEN NOT MATCHED THEN --不存在则新增
INSERT (a,b) VALUES(T1.a,T1.b);
USING (视图或表) T2--源表
ON ( T1.a=T2.a)--连接条件
WHEN MATCHED THEN--存在则更新
UPDATE SET T1.b = T2.b
WHEN NOT MATCHED THEN --不存在则新增
INSERT (a,b) VALUES(T1.a,T1.b);
注意:不能更新on (T1.a=T2.a)关联条件中的字段
<update id="batchUpdateOrAddPlatform" >merge into T_BAS_PLATFORM t1 --需要更新的表using ( <foreach collection="list" item="item" index="index" separator="union all"> select #{item.platformId,jdbcType=VARCHAR} PLATFORM_ID, #{item.platformCode,jdbcType=VARCHAR} PLATFORM_CODE, #{item.platformHeight,jdbcType=INTEGER} PLATFORM_HEIGHT, #{item.platformWidth,jdbcType=INTEGER} PLATFORM_WIDTH, #{item.lifitingPlatform,jdbcType=INTEGER} LIFITING_PLATFORM, #{item.permissionsSiteId,jdbcType=INTEGER} PERMISSIONS_SITE_ID, #{item.permissionsSiteName,jdbcType=VARCHAR} PERMISSIONS_SITE_NAME from dual </foreach> ) t2--把需要更新的数据循环拼成一个虚拟表 on (t1.PERMISSIONS_SITE_NAME = t2.PERMISSIONS_SITE_NAME and t1.PERMISSIONS_SITE_ID = t2.PERMISSIONS_SITE_ID and t1.PLATFORM_CODE = t2.PLATFORM_CODE )--连表条件 when MATCHED THEN--存在则更新 update set t1.FREIGHT_AREA = t2.FREIGHT_AREA, t1.PLATFORM_HEIGHT = t2.PLATFORM_HEIGHT, t1.PLATFORM_WIDTH = t2.PLATFORM_WIDTH, t1.LIFITING_PLATFORM = t2.LIFITING_PLATFORM WHEN NOT MATCHED THEN--不存在则新增 INSERT (PLATFORM_ID, PLATFORM_CODE, PLATFORM_HEIGHT, PLATFORM_WIDTH, LIFITING_PLATFORM, PERMISSIONS_SITE_ID, PERMISSIONS_SITE_NAME) VALUES ( t2.PLATFORM_ID, t2.PLATFORM_CODE, t2.PLATFORM_HEIGHT, t2.PLATFORM_WIDTH, t2.LIFITING_PLATFORM, t2.PERMISSIONS_SITE_ID, t2.PERMISSIONS_SITE_NAME )</update>
二、mysql中批量更新语法
语法示例: replace into t(id, update_time) values(1, now());
REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY
KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该
语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。
阅读全文
0 0
- Oracle与mysql批量新增或修改语法
- mysql的批量新增和批量修改
- mybatis针对Oracle数据库进行(单个或多个条件)批量操作(新增、修改、删除)的sql写法--mysql
- mybatis针对Oracle数据库进行(单个或多个条件)批量操作(新增、修改、删除)的sql写法--mysql
- mysql批量删除或修改
- Mybatis批量新增,修改
- mybaits批量新增修改
- mysql批量新增和修改示例(foreach 使用)
- 关于mysql存储过程(表数据同步批量新增,批量修改)
- oracle下mybatis批量新增
- MySQL与Oracle 语法对比
- mysql与oracle语法差异
- mysql与Oracle语法区别
- 批量删除或修改
- Mybatis的oracle的经典SQL语句(分页-新增的id自增-批量新增-动态修改-union all)
- mysql批量插入:语法
- mybatis 批量插入oracle与mysql
- MyBatis批量新增、修改、删除、查询
- Combinations:给定数据范围与位数,求出
- JS-正则详解
- hibernate 的原理及其步骤
- markdown 快捷键
- Android中的两个Activity用Intent来传递java bean实体
- Oracle与mysql批量新增或修改语法
- 转载:数据库的并发控制技术深度探索
- 1005. 继续(3n+1)猜想 (25)
- Github设置添加SSH
- cf556d set<node>操作
- 神经网络与深度学习笔记——神经网络与梯度下降
- 图灵奖得主姚期智最新论文出炉!中秋人家看月亮,AI人看论文
- Hibernate的核心类和接口
- 5 Ways To Boost Typing Speed And Accuracy