SQL MERGE:在预期条件的上下文中指定的非布尔类型的表达式,靠近','

时间:2016-12-20 15:31:30

标签: sql-server tsql

merge into emp_tar.et
    using emp_src.es on (et.emp_id, es.emp_id)
insert into (et.emp_id,et.emp_name)
    values(es.emp_id,es.emp_name)

每当我执行此代码时,它都会给出错误:

  

在上下文中指定的非布尔类型的表达式   条件是预期的,靠近','

1 个答案:

答案 0 :(得分:3)

这是正确的Merge语法

Merge into emp_tar et
    using emp_src es on et.emp_id = es.emp_id -- use = to equate two columns
When Not Matched then -- to insert the records only it is not present in target 
insert into (et.emp_id,et.emp_name)
    values(es.emp_id,es.emp_name)

相同
Insert into emp_tar(emp_id,emp_name)
Select es.emp_id,es.emp_name 
From emp_src es 
Where Not exists (select 1 from emp_tar et Where et.emp_id = es.emp_id)
当您想要执行多个DML操作时,可以使用

Merge语句。在您的情况下使用Merge

时,在SQL Server中Insert from Select也是非常错误的

<强> Use Caution with SQL Server's MERGE Statement