You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server如何编写UPDATE语句批量修正错误的partId数据

报错原因

你写的子查询SELECT partID FROM partsCatalog WHERE factoryId = 100没有加筛选条件匹配对应的officialIdentifierId,如果工厂100下存在多个零件,就会返回多条结果,赋值给单个partID字段时就会触发这个报错。

正确批量更新语句

SQL Server支持UPDATE关联多表的写法,你可以用下面的语句完成批量替换,注意:建议先把下面语句的UPDATE部分换成SELECT验证匹配结果无误后,再执行更新操作,避免数据写错:

UPDATE mp
SET mp.partId = pc_correct.partId
FROM industry.machineParts mp
-- 关联原零件目录拿到错误零件的officialIdentifierId
INNER JOIN partsCatalog pc_old ON mp.partId = pc_old.partId
-- 关联工厂100的零件目录,用同一个officialIdentifierId匹配正确的partId
INNER JOIN partsCatalog pc_correct 
    ON pc_old.officialIdentifierId = pc_correct.officialIdentifierId
    AND pc_correct.factoryId = 100
-- 只更新原工厂为88、89的错误零件
WHERE pc_old.factoryId IN (88, 89)

语句逻辑说明

  • 先关联machineParts和partsCatalog的旧数据,定位到所有工厂88、89的错误零件记录
  • 通过同一个officialIdentifierId关联到工厂100下对应的正确partId
  • 直接将错误的partId替换为匹配到的正确值,自动批量处理所有符合条件的行

内容的提问来源于stack exchange,提问作者SkyeBoniwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:36:03