merge into Oracle里的 saveOrUapdate

1、初始数据:

SQL> select * from a;

ID                     NAME
---------------------- ----------------------
1                      1
2                      1
3                      1
4                      1
5                      1
SQL> select * from b;

ID                     NAME
---------------------- ----------------------
1                      2
2                      2
11                     11

2、目标:1)a表中id与b表中id一样的话,更新a.name以b.name为准;2)b表中id不在a表中的话,复制b表的记录,插入到a表中

3、功能实现:

merge into A a using B b on (a.id = b.id) --on为匹配条件
when matched then --匹配时 更新a.name
update set a.name = b.name where 1=1 --这里可以添加where条件
when not matched then --不匹配时 复制并插入b
insert values(b.id,b.name) where 1=1

  

时间: 2024-11-09 00:43:19

merge into Oracle里的 saveOrUapdate的相关文章

Oracle里count(1)、count(*)和count(主键)哪个更快

这两天听了将近20场演讲,感觉收获很多,最深的感觉就是自己还有很长的路要走.有几个点记录一下: 昨天听老猫讲,提到一个普遍的问题就是Oracle里count(*).count(1)和count(主键)到底哪个快的问题.这个问题看起来很简单,每个人都会有自己的答案,去百度上搜会出来一大堆帖子来讲哪个更快.但是老猫说了它们三个其实是一样的,我听到之后也觉得挺诧异的,因为我记得别人跟我说过count(主键)会快,然后自己简单想了一下,觉得好像是那么回事的就没有深入去追究.接着老猫说官方有这样的说法这三

MSSQL如何访问ORACLE里的表

环境: MSSQL:2008 ORACLE DB:10.2.0.1 之前一直没有接触MSSQL,最近因需要MSSQL访问ORACLE里的表,下面是MSSQL连接ORACLE的配置过程. 1.在MSSQL的机器上安装ORACLE客户端,同时配置连接到ORALCE的TNS,这里我的配置如下: ORACL_10GA =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)

MERGE INTO oracle

http://blog.csdn.net/yuzhic/article/details/1896878 http://blog.csdn.net/macle2010/article/details/5980965 该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动. 1,insert 和update是可选的 2,UPDATE 和INSERT 后面可以跟WHERE

问题:Oracle long 类型l;结果:oracle里long类型的总结

oracle里long类型的总结 1.LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB. 2.对于超出一定长度的文本,基本只能用LONG类型来存储,数据字典中很多对象的定义就是用LONG来存储的.1.LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB. 2.对于超出一定长度的文本,基本只能用LONG类型来存储,数据字典中很多对象的定义就是用LONG来存储的. 3.LONG类型主要用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型. 4.很多工

Oracle里 用sql*plus 登陆时,用户名和密码是多少啊?

Oracle里sql*plus的用户名即system用户,密码是自己设置的密码. 如果密码忘记,可通过如下方法重置. 1.win键+R键,输入cmd,打开命令提示符. 2.输入sqlplus /nolog 3.继续输入conn /as sysdba 4.输入 alter user 用户名 identified by 密码; 5.修改成功后,会有上图"用户已更改"的提示,再次登录时用自己设定的密码即可.

Oracle里收集与查看统计信息的方法

Oracle数据库里的统计信息是这样的一组数据:它存储在数据字典里,且从多个维度描述了Oracle数据库里对象的详细信息.CBO会利用这些统计信息来计算目标SQL各种可能的.不同的执行路径的成本,并从中选择一条成本值最小的执行路径来作为目标SQL的执行计划. Oracle数据库里的统计信息可以分为如下6种类型: 表的统计信息 索引的统计信息 列的统计信息 系统统计信息 数据字典统计信息 内部对象统计信息 表的统计信息用于描述Oracle数据库里表的详细信息,它包含了一些典型的维度,如记录数.表块

Oracle里schema理解

在Oracle中,一个用户就是一个Schema,表都是建立在Schema中的,也可以理解为每个用户拥有不同的表.一个用户想访问另外一个用户,也就是另外一个schema的表的时候,可以用 username.tablename的形式来访问,完全不需要分布式事务.分布式事务不是给你做这个用的. Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决. Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的,具体见下面

ORACLE里的自增字段设置

大家都知道吧,这很坑,尤其是用惯了mysql里的自增字段设置,结果oracle里面没有的.oh,no 我用的是12c版本的,它有一个新特性,可以这样设置自增序列,在创建表是,把id设置为自增序列 create table t ( id   number generated by default as identity (start with 1 increment by 1), name    varchar2(20), password varchar2(20), Constraint Pk_

oracle里的执行计划-查看

内容主要来自看书学习的笔记,如下记录了常见查询执行计划的方法. 2.2 如何查看执行计划1.explain plan2.dbms_xplan包3.autotrace4.10046事件5.10053事件6.awr/statspack报告(@?/rdbms/admin/awrsqrpt)7.脚本(display_cursor_9i.sql) 2.2.1 explain planexplain plan for sqlselect * from table(dbms_xplan.display);SQ