如果目标表sql中没有源值,则插入到目标表中
我试图将数据从一个表插入到另一个表中,但我正在寻找一个查询,该查询可以首先查看源值是否在目标中,如果存在,则不应加载 假设我有下面的源代码如果目标表sql中没有源值,则插入到目标表中,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我试图将数据从一个表插入到另一个表中,但我正在寻找一个查询,该查询可以首先查看源值是否在目标中,如果存在,则不应加载 假设我有下面的源代码 ID|EMAIL|COUNTRY|PHONE 1|s@s.com|US|1212 现在检查目标表中是否存在上述电子邮件,如果没有,请加载它 等待您的答案。您可以使用MERGE语句 MERGE table2 AS target USING table1 AS source ON (target.email = source.email) WHEN
ID|EMAIL|COUNTRY|PHONE
1|s@s.com|US|1212
现在检查目标表中是否存在上述电子邮件,如果没有,请加载它
等待您的答案。您可以使用
MERGE
语句
MERGE table2 AS target
USING table1 AS source
ON (target.email = source.email)
WHEN NOT MATCHED BY TARGET
THEN INSERT (
email,
country,
Phone
) VALUES (
source.email,
source.country,
source.phone
);
简单连接也可以完成这项工作
INSERT INTO <TblDestination>
SELECT src.Email
FROM <TblSource> src
LEFT JOIN <TblDestination> dst ON src.Email = dst.Email
WHERE dst.Email IS NULL
插入到
选择src.Email
来自src
左键加入src.Email=dst.Email上的dst
其中dst.Email为空
这会将数据从一个表永久插入到另一个表吗是的,会。它会检查源表中的电子邮件是否已存在于目标表中,如果不存在,则会将其插入。如果它已经存在,则不会执行任何操作。然后编辑插入部分以包含这些列,请参阅我的更新答案。您正在使用SQL Server 2008,不是吗?我只是忘了添加分号,因为您必须用它终止MERGE
语句。其他人则认为它应该起作用。