为SQL Server 2017中相同Subtype的行批量更新相同的uniqueidentifier值
解决方案:为同Subtype批量生成统一UniqueIdentifier
没问题,针对你在SQL Server 2017里的需求,我给你准备了一条单语句的更新方案,完全适配大量数据和数百种Subtype的场景,不用手动逐个处理:
WITH SubtypeGuids AS ( SELECT Subtype, NEWID() AS NewGuid FROM YourTableName GROUP BY Subtype ) UPDATE t SET t.RelatedUniqueID = sg.NewGuid FROM YourTableName t JOIN SubtypeGuids sg ON t.Subtype = sg.Subtype WHERE t.RelatedUniqueID IS NULL; -- 可选:仅更新未设置过值的行
关键说明:
- 先用CTE
SubtypeGuids按Subtype分组,每个分组生成唯一的NEWID()值,确保同Subtype的所有行共享同一个GUID。 - 通过
JOIN关联原表和CTE,一次性批量更新所有匹配行的RelatedUniqueID字段,效率拉满。 - 末尾的
WHERE条件是可选优化:如果后续表中会新增行,下次运行时只会更新还没设置GUID的行,不会覆盖已有的值。
你只需要把YourTableName替换成实际的表名就可以直接运行,这条语句完全满足你“单条语句、自动适配所有Subtype”的要求。
内容的提问来源于stack exchange,提问作者Onthrax
相关产品推荐
相关产品推荐

