首页 新闻 搜索 专区 学院

SQLServer MERGE INTO语法的update子句能不能加where条件?

0
悬赏园豆:20 [已解决问题] 解决于 2019-11-22 08:40

代码:
MERGE INTO A T1
USING(
SELECT * FROM B
) T2 on
(T1.ID= T2.ID)
WHEN MATCHED THEN
UPDATE SET T1.value = T2.fValue
WHEN NOT MATCHED THEN
INSERT(ID,pointguid,value,datadate,createdate,iid,istatus)
VALUES(T2.ID,T2.pointguid, T2.fValue,T2.datadate,T2.createdate,T2.iid,T2.istatus);

因为我想在update的时候判断一下非空,所以想在UPDATE SET T1.value = T2.fValue后边加where条件,但是SQLServer好像并不支持这种语法,求大神赐教

七步、的主页 七步、 | 初学一级 | 园豆:78
提问于:2019-11-19 14:32
< >
分享
最佳答案
0

直接在MATCHED后面写 AND条件就可以了。
如你的
MERGE INTO A T1
USING(
SELECT * FROM B
) T2 on
(T1.ID= T2.ID)
--这个位置写条件
WHEN MATCHED AND ISNULL(T1.value,'')<>'' THEN
UPDATE SET T1.value = T2.fValue
--这个位置写条件
WHEN NOT MATCHED AND 其他条件 THEN
INSERT(ID,pointguid,value,datadate,createdate,iid,istatus)
VALUES(T2.ID,T2.pointguid, T2.fValue,T2.datadate,T2.createdate,T2.iid,T2.istatus);

收获园豆:20
CaiJuHao | 菜鸟二级 |园豆:352 | 2019-11-20 12:43

嗯,我最后就是用的这种办法

七步、 | 园豆:78 (初学一级) | 2019-11-22 08:40
其他回答(2)
0

可以试试isnull函数

左眼水星 | 园豆:50 (初学一级) | 2019-11-19 17:57
0

整个update 语句加上()试一下
。。。WHEN MATCHED THEN
(UPDATE SET T1.value = T2.fValue where。。。)
WHEN NOT MATCHED THEN。。。。。

wwr01 | 园豆:648 (小虾三级) | 2019-11-21 09:39

试了加括号不行

支持(0) 反对(0) 七步、 | 园豆:78 (初学一级) | 2019-11-22 08:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册