需將表 NT_dict_area 的 BriefNamePin、AllNamePin 字段,根據 Name 匹配從表 NT_areapin 同步更新。
UPDATE NT_dict_area
SET BriefNamePin = NT_areapin.BriefNamePin,
AllNamePin = NT_areapin.AllNamePin
FROM NT_dict_area
INNER JOIN NT_areapin
ON NT_dict_area.Name = NT_areapin.Name
INNER JOIN 替代舊式逗號連接,語義清晰、易維護。SET 子句直接引用源表別名列,避免子查詢重複掃描。Name 非唯一,需確認業務邏輯:是否允許一對多更新,或需加額外條件過濾。當需要同步「插入新、更新舊、刪除多餘」三合一時,MERGE 更優雅:
MERGE INTO NT_dict_area AS target
USING NT_areapin AS source
ON target.Name = source.Name
WHEN MATCHED THEN
UPDATE SET target.BriefNamePin = source.BriefNamePin,
target.AllNamePin = source.AllNamePin
WHEN NOT MATCHED BY TARGET THEN
INSERT (Name, BriefNamePin, AllNamePin)
VALUES (source.Name, source.BriefNamePin, source.AllNamePin)
WHEN NOT MATCHED BY SOURCE THEN
DELETE; -- 可選:刪除源表已無的目標行
Name 上有索引。SELECT 對比行數,確認影響範圍。