merge into中加入不等于条件判断

本文探讨了在数据库操作中如何使用MERGE INTO语句进行表间对比,当满足特定条件时执行更新或插入操作。在尝试将A表与B表依据某个列进行更新时遇到错误,原因是ON子句中不能使用不等于(!=)条件。通过学习和实践,了解到应将条件放入WHEN NOT MATCHED子句中,从而正确实现条件更新和插入。
摘要由CSDN通过智能技术生成

使用merge into,进行两张表的对比,如果条件符合则update,不符合可以insert。

这里的update和insert指的就是完整的update和insert的自语句。

所以可以做条件转移的。

如果想要将A表和B表中某个列是相同的,想要跟新某个不同,可以用语句。

我开始是这么想的:
报错:
无法更新 ON 子句中引用的列: “A”."SERVICE_VERSION"

merge into service_parameter a
using osb_service_info b on( a.service_code = b.osb_service_code and a.service_version != b.osb_service_version)
when matched then update set a.service_version=b.osb_service_version;

后面发现是不能用!=,on里面是不能用!=,on的作用是联表,这是个基础知识,对不起,我没想到,于是我上网搜发现有个老哥比我更骚,是这么想的:
把!=的条件假如到matched后面,我试了一下,语法还是报错,是不行的。

MERGE INTO Photo p
USING TmpPhoto tp
ON p.ProductNumberID = tp.ProductNumberID and p.SHA1 = tp.SHA1
WHEN MATCHED AND p.Rank = tp.Rank THEN
    UPDATE SET p.VerifiedDa
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值