繁体   English   中英

MERGE 语句 SQL 有几个条件

MERGE Statement SQL with several conditions

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有看起来像这样的数据,我似乎无法弄清楚如何让 MERGE 语句工作,因为它的条件有限:

进行合并时,除清除记录外,一切正常

资源:

AccountID = 123, Name = Mike, Balance = 100 (This should result in UPDATE - Matched Condition)
AccountID = 234, Name = Smith, Balance = 50 (This should result in New - Not Matched Condition)

目标:

AccountID = 123, Name = Mike, Balance = 150
AccountID = 12345, Name = john, Balance = 200 (This record needs to be marked as purged)

有什么想法吗?

1 个回复

如果我正确理解您的问题,那么您想使用以下条件:

  • 当与目标不匹配时
  • 当与不匹配时

一个粗略的例子:

merge ExistingTable as dest
using   ( values 
             ('123','Mike', '100')
            ,('234','Smith', '50')
        ) as src([AccountID], [Name], [Balance] )
    on src.[AccountID] = dest.[AccountID]
when matched then
    update set
        [Name] = src.[Name],
        [Balance] = src.[Balance]
when not matched by target then 
    insert ([AccountID],[Name],[Balance])
        values (src.[AccountID],src.[Name],src.[Balance])
when not matched by source then
    delete;

参考: MERGE (Transact-SQL)

1 SQL:如何限制 MERGE 语句将插入的记录数

一些样本数据: 所以我有一个目标表和一个源表。 我想要完成的是,当有大量not matched的项目时,只插入价值最高的 x 个顶部项目。 在合并本身上使用 top 是行不通的,因为这会限制整个源表,我想做类似的事情 - - 更新 - - 我的 MERGE 语句还包含一个 WHEN MAT ...

4 Bash嵌套if语句有几个条件

我目前正在苦苦讨论Bash中的嵌套if语句。 这是我目前正在尝试做的事情: 我检查了所有内容,从if语句正确关闭到甚至尝试使用其他几个表达式,但是在运行我的脚本并输入第二个if语句(带有2个表达式来检查)时,Bash输出: “空闲”实际上是$status_general变量的初 ...

5 SQL语句检索几个计数

从patient检索数据和每个患者的tsID数量: 现在,我想检索tsFlag=1数量, tsStatus=0数量,'tsStatus = 1'的数量... tsStatus=3数量。 感谢爆炸药的答案: 是工作就像一个魅力,但让NULL的SUM如果Count=0 -我怎 ...

9 T-SQL触发器中的MERGE语句可偶尔工作

我遇到的问题涉及AFTER Insert触发器中使用的MERGE语句。 情况是,我们有一个表,该表是库存交易的历史记录,称为表A。将记录插入表A后,将触发AFTER INSERT触发器。 此触发器包含两个MERGE语句,用于更新表B,然后更新表C。表C的MERGE加入表B,因此我们不再重复计 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM