【问题标题】:SQL MERGE: An expression of non-boolean type specified in a context where a condition is expected, near ','SQL MERGE:在预期条件的上下文中指定的非布尔类型的表达式,靠近“,”
【发布时间】: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

标签: sql-server tsql


【解决方案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

【讨论】:

  • 谢谢,请告诉我同样的破坏性合并和追加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
相关资源
最近更新 更多