精华内容
下载资源
问答
  • merge into用法

    千次阅读 2021-02-01 11:27:04
    简单的说就是,判断表中有没有符合on()条件中的数据,有了就更新数据,没有就插入... 以上就是merge into用法的详细内容,更多请关注php中文网其它相关文章! 本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    简单的说就是,判断表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据。

    e7d52ce4874a3320a7500d596c433e0e.png

    有一个表T,有两个字段a、b,我们想在表T中做Insert/Update,如果条件满足,则更新T中b的值,否则在T中插入一条记录。在Microsoft的SQL语法中,很简单的一句判断就可以了,SQL Server中的语法如下:(推荐学习:MySQL视频教程)if exists(select 1 from T where T.a='1001' )

    update T set T.b=2 Where T.a='1001'

    else

    insert into T(a,b) values('1001',2);

    但是很明显这个语法对于SQL只能更改一条语句,并且Oracle不能使用.所以就有了Merge into(Oracle 9i引入的功能)语法merge into 目标表 a

    using 源表 b

    on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)

    when matched then update set a.更新字段=b.字段

    when not matched then insert into a(字段1,字段2……)values(值1,值2……)

    "在一个同时存在Insert和Update语法的Merge语句中,总共Insert/Update的记录数,就是Using语句中"源表"的记录数"。

    源表b可能是一张表结构不同于a的表,有可能是一张构建相同表结构的临时表,也有可能是我们自己组起来的数据.

    更多MySQL相关技术文章,请访问MySQL数据库图文教程栏目进行学习!

    展开全文
  • SQL中merge into用法

    2021-01-27 05:24:04
    从备份表中更新字段到正式表中,使用 UPDATE 批量更新大量的数据,会出现效率低下,有时候甚至卡死的情况,后面通过使用 MERGE INTO 代替 UPDATE 执行批量更新,会提升执行效率。MERGE INTO语法如下:1 MERGE ...

    从备份表中更新字段到正式表中,使用 UPDATE 批量更新大量的数据,会出现效率低下,有时候甚至卡死的情况,后面通过使用 MERGE INTO 代替 UPDATE 执行批量更新,会提升执行效率。

    MERGE INTO语法如下:

    1 MERGE INTOtable_name alias12 USING (table|view|sub_query) alias23 ON (joincondition)4 WHEN MATCHED THEN

    5 UPDATE

    6 SET col1 =col1_val1,7 col2 =col2_val28 WHEN NOT MATCHED THEN

    9 INSERT (column_list) VALUES (column_values);

    其中,table_name 指的是更新的表,using()里边的指的是数据来源表/视图/子查询结果集,condition指的是连接条件,如果满足连接条件,set 字段1=值1,字段2=值2...

    如果连接条件不满足,则停止更新进行插入。

    下面我们来举例说明:

    先创建被更新表merge_target,并往其中插入一条数据用来更新;

    20200605232041357770.png

    再创建更新表merge_source,用来向被更新表插入数据;

    20200605232041563812.png

    下面准备merge into脚本:

    1 MERGE INTOmerge_target target2 USING (SELECT B.name,B.age,B.target_id FROMmerge_source B) source3 ON (target.id=source.target_id)4 WHEN MATCHED THEN

    5 UPDATE

    6 SET target.name =source.name,7 target.age =source.age8 WHEN NOT MATCHED THEN

    9 INSERT(target.name,target.age) VALUES (source.name,source.age);

    结果如下:

    20200605232041630214.png

    另:MySql不支持merge into 语法。

    ————————————————

    版权声明:本文为CSDN博主「CtrlC V型程序员」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/qq_40992849/article/details/80985417

    展开全文
  • ORACLE 9I中加入了MERGE 语法: MERGE [hint] INTO [schema .] table [t_alias] USING [schema .] { table | viewOracle 9I中加入了MERGE语法:MERGE [hint] INTO [schema .] table [t_alias]USING [schema .] { ...

    ORACLE 9I中加入了MERGE 语法: MERGE [hint] INTO [schema .] table [t_alias] USING [schema .] { table | view

    Oracle 9I中加入了MERGE

    语法:

    MERGE [hint] INTO [schema .] table [t_alias]

    USING [schema .] { table | view | subquery } [t_alias]

    ON ( condition )

    WHEN MATCHED THEN merge_update_clause

    WHEN NOT MATCHED THEN merge_insert_clause;

    创建测试数据表:

    create table tj_test(id number,name varchar2(20),age number);

    向表中插入数据:

    insert into tj_test values (1,'jan',23);

    insert into tj_test values (2,'kk',22);

    insert into tj_test values (3,'joe',27);

    select * from tj_test;

    查询结果如下:

    1 jan 23

    2 kk 22

    3 joe 27

    创建另一新表

    create table tj_test1 as select * from tj_test where 1=0

    插入一条数据

    insert into tj_test1 values (1,'jlk',23);

    select * from tj_test1

    查询结果如下:

    1 jkl 23 --注意,这里的的NAME字段中的值是jkl

    使用MERGE,实现有则更新,无则插入,sql语句如下:

    merge into tj_test1 tt1

    using tj_test tt

    on (tt1.id=tt.id)

    when matched then

    update set

    tt1.name=tt.name,

    tt1.age=tt.age

    when not matched then

    insert values(

    tt.id,

    tt.name,

    tt.age)

    查询tj_test1表(对比原来表中的数据,更新了ID=1 ROW中字段NAME,同时多出两条新数据)

    select * from tj_test1

    改变行数据如下:

    1 jan 23 --这里的原有jkl值被更新

    3 joe 27 --原来表中没有的插入

    2 kk 22 --原来表中没有的插入

    如果存在就更新,不存在就插入

    9i已经支持了,是Merge,但是只支持select子查询,

    如果是单条数据记录,,可以写作select …… from dual的子查询。

    语法为:

    MERGE INTO table

    USING data_source

    ON (condition)

    WHEN MATCHED THEN update_clause

    WHEN NOT MATCHED THEN insert_clause;

    如:

    MERGE INTO course c

    USING (SELECT course_name, period,

    course_hours

    FROM course_updates) cu

    ON (c.course_name = cu.course_name

    AND c.period = cu.period)

    WHEN MATCHED THEN

    UPDATE

    SET c.course_hours = cu.course_hours

    WHEN NOT MATCHED THEN

    INSERT (c.course_name, c.period,

    c.course_hours)

    VALUES (cu.course_name, cu.period,

    cu.course_hours);

    logo.gif

    f68f2add0b68e4f9810432fce46917b7.png

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • Merge into用法总结

    万次阅读 2019-02-26 19:07:26
    一.Merge into用法简介 MERGE INTO T2 --目标表 USING Tl --源表 ON (Tl.NAME=T2.NAME) --表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据 WHEN MATCHED THEN --符合条件就更新数据 UPDAT...

    一.Merge into用法简介

    MERGE INTO T2                 --目标表
    USING Tl                      --源表
    ON (Tl.NAME=T2.NAME)       --表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据
    WHEN MATCHED THEN             --符合条件就更新数据
    UPDATE 
    SET T2.MONEY=Tl.MONEY + T2.MONEY 
    WHEN NOT MATCHED THEN         --不符合条件就插入数据
    INSERT 
    VALUES (Tl.NAME,Tl. MONEY) ; 

    二. MERGE 灵活之处

    (1)UPDATE INSERT 动作可只出现其一(Oracl 9i 要求必须同时出现)

    可选择仅 UPDATE 目标表:

    MERGE INTO T2 
    USING Tl 
    ON (Tl.NAME=T2.NAME) 
    WHEN MATCHED THEN 
    UPDATE 
    SET T2.MONEY=Tl.MONEY+T2.MONEY; 

    也可选择仅仅 INSERT 目标表而不做任何 UPDATE 动作

    MERGE INTO T2 
    USING Tl 
    ON (Tl.NAME=T2.NAME) 
    WHEN NOT MATCHED THEN 
    INSERT 
    VALUES (Tl.NAME,Tl.MONEY) ; 

    (2)可对 MERGE 语句加条件

    MERGE INTO T2 
    U
    展开全文
  • 主要介绍了oracle中merge into用法及实例解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 从备份表中更新字段到正式表中,使用 UPDATE 批量更新大量的数据,会出现效率低下,有时候甚至卡死的情况,后面通过使用 MERGE INTO 代替 UPDATE 执行批量更新,会提升执行效率。MERGE INTO语法如下:MERGE INTO ...
  • 1、可省略的UPDATE或INSERT子句 在Oracle 9i, MERGE语句要求你必须同时指定INSERT和UPDATE子句.而在Oracle 10g, 你可以省略UPDATE或INSERT子句中的一个. 下面的例子根据表NEWPRODUCTS的PRODUCT_ID字段是否匹配来...
  • springboot mybatis merge into 用法

    千次阅读 2018-12-29 16:38:59
    例子: <update id="insert" parameterType="... merge into 表名 a using (select 1 from dual) on (a.字段1 = #{参数} and a.字段2 = #{参数2}) when not matched then in...
  • oracle中merge into用法解析 https://blog.csdn.net/jeryjeryjery/article/details/70047022
  • merge into 用法详解

    千次阅读 2018-02-06 13:36:39
    一、用途 可以同时从1个或者多个源头对表进行更新或者插入,删除...merge into table_name alias1 --需要操作的表 可以用别名 using (table|view|sub_query) alias2 --数据来源 可以是表、视图、子查询 on (join condi
  • jdbcType=BIGINT} ) insert> 更新插入——Merge into用法 <insert id="insertAndUpdate"> merge into LZ_HGVA_MID t1 using LZ_HGVA_MID_TEMP t2 on (t1.cn_name = t2.cn_name and t1.data_date = t2.data_date) ...
  • Merge into用法

    2021-11-21 22:45:42
    Merge into是Oracle语法, 判断表中有没有符合on()条件中的数据,满足条件则可以更新数据,不满足就插入数据。【注意on后面的条件一定要用()包起来】 方式一:Insert/Update 有一个表T,有两个字段a、b,我们想...
  • merge into 用法深思

    2018-12-12 19:44:18
    那么现在就来赘述一下merge into的一些用法 merge into 是用来进行合并表的,但因为其特性不同场合用法有以下几种 1、合并表 2、外部数据插入更新 3、用join表更新 1和3我这里就不赘述了,我使用到的是2这一类,...
  • SqlServer的Merge Into用法

    2019-05-14 10:40:00
    只有SqlServer2008以上版本才支持。...低版本会报incorrect syntax near the keywork 'into'。 select @@version 来查看数据库版本 转载于:https://www.cnblogs.com/taofengfeng/p/10860934.html...
  • mybatis 批量插入以及merge into用法

    千次阅读 2019-03-06 12:16:10
    一、mybiats foreach标签 &...INSERT INTO TStudent(name,age) &lt;foreach collection="list" item="item" index="index" open="("close=")&
  • Oracle merge into用法

    2011-03-16 18:16:27
    关于Oracle中merge into用法,比较实用哦

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,415
精华内容 4,566
关键字:

mergeinto用法