首页 > 解决方案 > 将多张表合并为一张表 SQL Server

问题描述

我想将 3 个表合并为一个,只是为了获取具有以下条件的完整数据

这是我从表 2 合并到测试中的示例代码。

MERGE INTO [dbo].[test] a
USING [dbo].[test2] b ON a.col1 = b.col1

WHEN MATCHED THEN
    UPDATE 
    SET col1 = b.col1,
        col2 = b.col2,
        col3 = b.col3,
        col4 = b.col4
    WHERE col1 = '' OR col2 = '' OR col3 = '' OR col4 = '';

它得到错误:

关键字“where”附近的语法不正确。

标签: sqlsql-servertsqlsql-server-2008sql-server-2012

解决方案


请尝试使用 COALESCE 函数而不是使用 where 条件。如果遇到 NULL,COALESCE 函数将采用下一个值。

    Merge into [dbo].[test] a   
    using [dbo].[test2] b
    on a.col1 = b.col1
    when matched then
    update
    set col2 = COALESCE(a.col2, b.col2),
    col3 = COALESCE(a.col3, b.col3),
    col4 = COALESCE(a.col4, b.col4);

因此,在修改后的代码中,如果表 [dbo].[test] col2 为 Null,则它从 [dbo].[test2] 中获取值。由于您将使用 COALESCE,因此您将能够合并任意数量的值。


推荐阅读