• SQL server中merge语句添加where条件


    SQL server中merge语句添加where条件

    1.merge语句添加where条件

    在SQL Server中,可以使用MERGE语句将INSERT、UPDATE和DELETE操作组合在一起,根据指定的条件将数据合并到目标表中。如果想在MERGE语句中添加WHERE条件,可以按照以下格式编写语句:

    MERGE target_table AS target
    USING source_table AS source
    ON target.column = source.column
    WHEN MATCHED AND <where_condition> THEN
        UPDATE SET target.column = source.column
    WHEN NOT MATCHED AND <where_condition> THEN
        INSERT (column1, column2, ...)
        VALUES (source.column1, source.column2, ...)
    WHEN NOT MATCHED BY SOURCE AND <where_condition> THEN
        DELETE;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在上面的语句中,是想要添加的WHERE条件,它可以是任何合法的SQL条件表达式。可以根据需要在MATCHED和NOT MATCHED子句中分别添加WHERE条件。

    请注意,WHERE条件将根据源表和目标表之间的匹配进行评估。如果WHERE条件为真,则执行相应的操作(UPDATE、INSERT或DELETE)。如果WHERE条件为假,则跳过相应的操作。

    确保在编写MERGE语句时,正确指定目标表和源表,并根据实际需求设置列名和条件。

    2.SQL实例

    提供一个实际的例子来说明如何在SQL Server中使用MERGE语句进行数据合并操作并添加WHERE条件。

    假设我们有两个表:表A和表B,它们具有相同的列结构。我们想要将表B中满足特定条件的数据合并到表A中。

    表A的结构如下:

    CREATE TABLE TableA (
        ID INT PRIMARY KEY,
        Name VARCHAR(50),
        Age INT,
        City VARCHAR(50)
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    表B的结构如下:

    CREATE TABLE TableB (
        ID INT PRIMARY KEY,
        Name VARCHAR(50),
        Age INT,
        City VARCHAR(50)
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    现在,假设我们要将表B中年龄大于等于30岁的数据合并到表A中,可以使用以下MERGE语句:

    MERGE INTO TableA AS Target
    USING TableB AS Source
    ON (Target.ID = Source.ID)
    WHEN MATCHED AND Source.Age >= 30 THEN
        UPDATE SET
            Target.Name = Source.Name,
            Target.Age = Source.Age,
            Target.City = Source.City
    WHEN NOT MATCHED BY TARGET AND Source.Age >= 30 THEN
        INSERT (ID, Name, Age, City)
        VALUES (Source.ID, Source.Name, Source.Age, Source.City);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在上述示例中,我们使用MERGE语句将表B中满足条件(年龄大于等于30岁)的数据合并到表A中。如果在表B中找到匹配的记录,并且满足年龄大于等于30岁的条件,则将表A中的记录更新为表B中的对应值。如果在表B中找不到匹配的记录,并且满足年龄大于等于30岁的条件,则将表B中的记录插入到表A中。

  • 相关阅读:
    Git实操图文详解系列教程(4)——IDEA集成GitHub
    重新理解 RocketMQ Commit Log 存储协议
    1000个已成功入职的软件测试工程师简历范文模板(含真实简历)
    小小开发板承载万千创新可能,小熊派的云上奇遇记
    从-1开始实现一个中间件
    Linux配置成代理服务器
    [Git][多人协作][下]详细讲解
    【Pytorch报错】RuntimeError:cuDNN error:CUDNN_STATUS_INTERNAL_ERROR 高效理解记录及解决!
    NetFlow Analyzer-网络检测和响应
    ES6中let和const关键字与var关键字之间的区别?
  • 原文地址:https://blog.csdn.net/qq_42391904/article/details/132859139