这是一段针对sqlserver数据库的 merge语句:
MERGE CB_Ops_HQDaily_Dtl_Prod a
USING CB_Ops_EntDaily_Dtl_Prod b
ON a.SEQ_NO = b.SEQ_NO
WHEN matched THEN UPDATE SET a.DISP_ORDER = b.DISP_ORDER, a.REMARK = b.REMARK
WHEN NOT matched THEN INSERT (DISP_ORDER,REMARK) VALUES (b.DISP_ORDER,b.REMARK);
重点是WHEN NOT matched THEN部分
如果你查寻merge语法的问题,你会发现介绍的语句都是这种样式:
WHEN NOT matched THEN INSERT (a.DISP_ORDER,a.REMARK) VALUES (b.DISP_ORDER,b.REMARK);
或
WHEN NOT matched THEN INSERT a(DISP_ORDER,REMARK) VALUES (b.DISP_ORDER,b.REMARK);
如果你是使用第二、三个样式,会报各种错误
很奇怪吧,按道理讲 WHEN matched THEN 和 WHEN NOT matched THEN 是一个级别的,别名要能用都能用,要能省略都能省略。可事实是insert 不能用别名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)