首页 > 其他分享 >merge into语句用法

merge into语句用法

时间:2023-08-08 23:23:29浏览次数:39  
标签:语句 insert into when update merge matched

原文地址:https://zhuanlan.zhihu.com/p/47884584

使用merge语句从一个或多个源中选择行以进行更新或插入表或视图。可以指定条件以确定是update还是insert目标表或视图。

merge语句是组合多个操作的便捷方式。它可以让你避免多次使用INSERT,UPDATE和DELETE语句去操作数据。

语法:

merge [hint]
 into[schema.] {table |view} [ t_alias ]
 using {[schema.] {table|view }|subquery } [t_alias ]
 on ( condition )
 when matched then [merge_update_clause]
  when not matched then  [merge_insert_clause ];

参考源:MERGE

描述:

merge into  baseTable   bt
 using  (select * from tempTable)  temp 
 on (bt.code = temp.code)
 when matched then  inset/update/delete语句
 when not matched then  inset/update语句;

1. 用一个表(tempTable)按条件去操作另一个表(baseTable)的数据,如果on 条件为true 则表示条件匹配 执行when matched then后的语句,否则执行when not matched then;

2. when matched then和when not matched then 可选,我们可以至使用其中一个;

3. update 或insert语句 不用再写表名;

例:
when matched then 
   update set  bt.name = temp.name  where ....
when not matched then 
   insert  (  ,  ,  ,  )   values (  ,  ,  ,  )
--表名省略不写

3. delete语句只能写在matched(匹配)情况中,不匹配时无法删除将抛出错误;

4. using后可以是一张表,也可以是子查询组成的临时表;

5.merge是一个确定性的陈述,无法在同一MERGE语句中多次更新目标表的同一行。

标签:语句,insert,into,when,update,merge,matched
From: https://www.cnblogs.com/eyesfree/p/17615682.html

相关文章

  • MySQL流程控制语句
    连接数据库mysql-hlocalhost-uroot-prootMySQL函数函数:是指一段可以直接被另一段程序调用的程序或代码。在MySQL中会有很多的内置函数,我们只需要使用就行;常见的字符串函数concat函数selectconcat('hello','zhangsan');返回的是:hellozhangsanselectlower('HELLo......
  • Oracle使用存储过程批量导出建表语句和索引语句
    --1.用system用户创建路径datA_dump用于存放文件--/u01/dump必需是已经存在的目录createorreplacedirectoryDATA_DUMPas'/u01/dump';--用sys用户登录给要访问的用户指定访问目录的权限grantwriteondirectoryDATA_DUMPtohr;grantreadondirectoryDATA_DUMPtoh......
  • nebula nGQL中的WITH语句使用——和sql里with as的顺序是相反的
    SQL中的withas语句WITHAS短语,也叫做子查询部分(subqueryfactoring),是用来定义一个SQL片断,该SQL片断会被整个SQL语句所用到。这个语句算是公用表表达式(CTE)。比如withAas(select*fromclass)select*fromA这个语句的意思就是,先执行select*fromclass得到一个......
  • 数据库增删改查语句(入门)
    数据库增删改查语句一、增加insertinto...values1、insertinto表名(列名1,列名2,...列名n) values(值1,值2,...值n);(写列名插入数据)2、insertinto表名values(值1,值2,...值n);(不写列名插入数据)二、删除delete1、deletefrom表名;(删除表中所有数据)2、deletefrom表名where列=值;(根......
  • merge连接两个DataFrame
    importpandasaspd#创建左边的示例DataFramedata1={'ID':[1,2,3,4],'Name':['Alice','Bob','Charlie','John']}df1=pd.DataFrame(data1)df1.set_index('ID',inplace=True)......
  • [学习笔记] Switch语句使用“===”进行比较
    JS中,switch语句会使用恒等计算符(===)进行比较。如上所述,下列代码中因为x定义为字符串10,而case为数字10,因此将不会弹出“HelloWorld”:var x="10";switch(x){    case 10:alert("Hello");}实际应用时应注意这点。......
  • 第5章 if语句
    5.1一个简单示例1.if代表判断的意思,成立和不成立执行的代码块不一致5.2条件测试1.if进行判断,如果为true就执行if块代码,为false就忽略代码5.2.1检查是否相等1.一个等号是赋值,两个等号是比较是否相等5.2.2检查是否相等时不考虑大小写1.字母的大小写也会视为不相等......
  • IDE committ规范及要求——多次提交的committ通过rebase合并---深入一点点-遇到merge
    1.强推-命令行操作//中止正在进行的Gitrebase操作的命令gitrebase--abort//将当前分支重命名为backupgitbranch-mmini_alarmmini_alarm_backup//用远端主分支拉gitcheckout-bmini_alarmupstream/master//gitk会打开一个图形界面窗口,显示当前目录下Git仓库......
  • MySQL基础语句
    select*from表where字段in(select临时表名.字段from(另一个字段)临时表名);deletefrom表名where字段inselect临时表名.字段from(另一个字段)临时表名);update表名set字段=新值where字段in(select临时表名.字段from(另一个字段)临时表名));insertint......
  • postgresql满语句查询及灭杀
    1.查询慢语句查询当前库超过指定运行时长的语句--获取正在执行的sql进程select c.relname对象名称, l.locktype可锁对象的类型, l.pid进程id, l.mode持有的锁模式, l.granted是否已经对锁进行授权, l.fastpath, psa.datname数据库名称, psa.wait_event等待事件,......