SQL MERGE:在预期条件的上下文中指定的非布尔类型的表达式,靠近“,”
Posted
技术标签:
【中文标题】SQL MERGE:在预期条件的上下文中指定的非布尔类型的表达式,靠近“,”【英文标题】:SQL MERGE: An expression of non-boolean type specified in a context where a condition is expected, near ',' 【发布时间】:2016-12-20 15:31:30 【问题描述】: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)
每当我执行此代码时,它都会给出错误:
在上下文中指定的非布尔类型的表达式 预期条件,靠近“,”
【问题讨论】:
你想在这里做什么...?您的代码存在多个问题。 您应该首先查看 MERGE 的文档。您在此处发布的内容有很多语法错误,很明显您没有查看任何示例。 msdn.microsoft.com/en-us/library/bb510625.aspx 【参考方案1】:这是正确的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)
Merge
语句可以在您想要执行多个 DML 操作时使用。此外,Sql Server 中的 Merge
在您的情况下使用 Insert from Select
更好
Use Caution with SQL Server's MERGE Statement
【讨论】:
谢谢,请告诉我同样的破坏性合并和追加。以上是关于SQL MERGE:在预期条件的上下文中指定的非布尔类型的表达式,靠近“,”的主要内容,如果未能解决你的问题,请参考以下文章
在预期条件的上下文中指定的非布尔类型的表达式,靠近 IDT 中的“)”错误