批量更新表中同一列多条记录的SQL语句问题排查
批量更新CHAINOFCUSTODY表的正确SQL方案
原SQL语句未生效的核心原因是WHERE子句逻辑错误:你用AND连接了两个互斥的条件组,一条记录不可能同时满足COCITEMID='243831'和COCITEMID='243832',自然找不到匹配的记录。
修正后的SQL语句(方案一:OR连接条件组)
UPDATE CHAINOFCUSTODY SET TRANSACTIONCOMMENTS = 'RETAIN_14' WHERE (COCITEMID = '243831' AND ORIGREC = '1118708') OR (COCITEMID = '243832' AND ORIGREC = '1118709')
更简洁的写法(方案二:IN匹配元组)
如果后续需要更新更多(COCITEMID, ORIGREC)组合,用这种写法更易维护:
UPDATE CHAINOFCUSTODY SET TRANSACTIONCOMMENTS = 'RETAIN_14' WHERE (COCITEMID, ORIGREC) IN ( ('243831', '1118708'), ('243832', '1118709') -- 可继续添加更多组合 )
以上两种写法都是批量更新,无需逐条操作,能高效完成需求。
内容的提问来源于stack exchange,提问作者femiya salam
相关产品推荐
相关产品推荐

