代码:
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好像并不支持这种语法,求大神赐教
直接在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);
嗯,我最后就是用的这种办法
可以试试isnull函数
整个update 语句加上()试一下
。。。WHEN MATCHED THEN
(UPDATE SET T1.value = T2.fValue where。。。)
WHEN NOT MATCHED THEN。。。。。
试了加括号不行