为了账号安全,请及时绑定邮箱和手机立即绑定

sql server MERGE INTO 同一个表,报错

sql server MERGE INTO 同一个表,报错

呼如林 2019-04-19 18:15:57
MERGE INTO FACTORY_STATISTICS f USING ( SELECT COUNT ( 1 ) AS COUNT FROM FACTORY_STATISTICS ff WHERE ff.FACTORYCODE = '1000'  AND ff.MATERIALID = 'T01100' ) CONDITION ON ( CONDITION.count > 0 )  WHEN MATCHED THEN UPDATE      SET f.PARTAVANUM = f.PARTAVANUM + 1,     f.MATCHAVANUM = f.MATCHAVANUM + 1,     f.AVAILABLENUM = f.AVAILABLENUM + 1,     f.TOTALNUM = f.TOTALNUM + 1      WHEN NOT MATCHED      AND f.FACTORYCODE = '1000'      AND f.MATERIALID = 'T01100' THEN     INSERT (     f.ID,     f.FACTORYCODE,     f.MATERIALID,     f.PARTAVANUM,     f.PARTFREEZENUM,     f.PARTLOCKNUM,     f.MATCHAVANUM,     f.MATCHFREEZENUM,     f.MATCHLOCKNUM,     f.AVAILABLENUM,     f.FREEZENUM,     f.LOCKNUM,     f.TotalNum      ) VALUES     (     '1',     '1',     '1',     '1',     '1',     '1',     '1',     '1',     '1',     '1',     '1',     '1',     '1'      ) ```[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]MERGE 语句中使用的插入列列表中不能包含多部分标识符。 请改用单部分标识符。 (10739)
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

1、目标表字段不能作为条件判断

WHEN NOT MATCHED  AND f.FACTORYCODE = '1000'   AND f.MATERIALID = 'T01100' THEN

2、你INSERT 语句中行值表达式的数目超出了设置 行值的最大允许值。
3、更新同一张表,完全没必要merge,再者你的f和ff并无关系,没有任何匹配和不匹配可言。


查看完整回答
反对 回复 2019-05-14
  • 2 回答
  • 0 关注
  • 3016 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号