首页 > 数据库 >SQL 高级语法 MERGE INTO

SQL 高级语法 MERGE INTO

时间:2024-09-25 13:38:25浏览次数:7  
标签:INTO WHEN MERGE tbl SQL col

SQL 高级语法 MERGE INTO

 

根据与源表相联接的结果,对目标表进行插入、更新、删除等操作。 例如,对目标表,如果源表存在的数据则更新,没有的则插入,就可以使用MEREG进行同步。

基本语法

MERGE INTO target_table
USING source_table
ON condition
WHEN MATCHED THEN 
XXX
WHEN NOT MATCHED THEN 
XXX

这里的Source table 不限于单独的表格,也可以是子查询的内容

示例

INSERT tbl_A (col, col2)
SELECT col, col2
FROM tbl_B
WHERE NOT EXISTS (SELECT col FROM tbl_A A2 WHERE A2.col = tbl_B.col);

上面的SQL是为了向 tbl_A 中插入 tbl_B 含有的,但是 tbl_A 不包含的col
改为MERGE可以写为

MERGE INTO tbl_A  t  
    USING tbl_B v  
    ON t.col = v.col  
    WHEN MATCHED THEN   
        UPDATE SET y.c2 = v.c2  
    WHEN NOT MATCHED THEN  
        INSERT (col, col2) VALUES (v.c1, v.c2);

(这里为了展示更多的选项,加多了一句UPDATE)
当一个表需要依托于另一个表进行更新操作的时候,使用MERGE可以快捷的实现

标签:INTO,WHEN,MERGE,tbl,SQL,col
From: https://www.cnblogs.com/sexintercourse/p/18431149

相关文章

  • SQL Server 语句日期格式查找方法
    SQLServer语句日期格式查找方法 1.SQLServer中,处理日期格式和查找特定日期格式方法示例在SQLServer中,处理日期格式和查找特定日期格式的记录是一个常见的需求。SQLServer提供了多种函数和格式选项来处理和比较日期。以下是一个详细的示例,展示了如何根据特定日期格式查......
  • 单个48TB大小SQL Server数据库备份导致日志文件无法截断
    单个48TB大小SQLServer数据库备份导致日志文件无法截断 SQLServer版本:SQLServer2019背景在一个48T大小的单数据库环境中,采用简单恢复模式,日志文件大小限制为600G。执行一次完整备份时,耗时超过12小时,导致日志文件无法截断并达到上限,后续事务无法正常写入,导致整个数据库不可......
  • 【MySQL】基础知识Day1
    博客主页:小蜗系列专栏:MySQL参考教程:菜鸟教程/黑马关注博主,后期持续更新系列文章如果有错误请大家批评指出,我会及时修改感谢大家点赞......
  • mysql 八股文
    八股文mysql篇基础数据3大范式第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分第二范式:建立在第一范式的基础之上,要求所有非主键字段完全依赖主键,不要产生部分依赖。第三范式:建立在第二范式的基础上,要求所有非主键字段直接依赖主键,不要产生传递依赖数据......
  • SQL Server的Descending Indexes降序索引
    SQLServer的DescendingIndexes降序索引 SQLServer的DescendingIndexes降序索引   背景索引是关系型数据库中优化查询性能的重要手段之一。对于需要处理大量数据的场景,合理的索引策略能够显著减少查询时间。特别是在涉及多字段排序的复杂查询中,选择合适的索引类型......
  • 【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
    本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7396959.html?templateId=1718516问题现象yashandb执行带oracledblink表的sql性能差:同样的语句,同样的数据,oracle通过dblink访问远端oracle执行,耗时不到1秒钟:问题的风险及影响yashandb通过dblink访问oracle......
  • 数据库系统------sql语句
    创建以上的图就是sql中创建表的大致使用方法啦,每一个椭圆或者圆就是sql固定的语法,然后矩形就是我们自己自定义的,然后箭头代表着输入的顺序,如果箭头又回到某个起始处,表示这可以是一个循环,比如定义多个列,以下就带大家一起走一遍这个流程吧我们按照这个图的输入顺序一个一个写ok,......
  • MySQL 脱敏函数使用
    1.身份证号、手机号、银行卡号采用Perconadata_masking.so插件脱敏https://docs.percona.com/percona-server/8.0/data-masking-plugin-functions.html安装脱敏插件mysql>INSTALLPLUGINdata_maskingSONAME'data_masking.so';mysql>SELECT*FROMINFORMATION_SCHEMA.P......
  • 基于Java+SpringBoot+Mysql明星资讯信息系统功能设计与实现七
    一、前言介绍:1.1项目摘要随着社会的不断进步和人们生活水平的提高,娱乐产业在全球范围内得到了迅猛发展。明星作为娱乐产业的重要组成部分,其资讯的获取和传播成为了广大观众和粉丝关注的焦点。因此,研究明星资讯的课题背景,可以深入了解娱乐产业的发展趋势和市场需求。互联......
  • 基于Java+SpringBoot+Mysql明星资讯信息系统功能设计与实现八
    一、前言介绍:1.1项目摘要随着社会的不断进步和人们生活水平的提高,娱乐产业在全球范围内得到了迅猛发展。明星作为娱乐产业的重要组成部分,其资讯的获取和传播成为了广大观众和粉丝关注的焦点。因此,研究明星资讯的课题背景,可以深入了解娱乐产业的发展趋势和市场需求。互联......