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 中的“)”错误

SQLServer 空间查询返回错误在预期条件的上下文中指定的非布尔类型的表达式,靠近 ')'

SQL 用户定义函数生成非布尔类型错误

以位为条件的 SQL

数据库原理-过程化sql