有三張表,結構如下:
關聯關係:
目標:通過 MSSQL 語句,將表1的字段2更新為表3的字段1。
使用 UPDATE 配合子查詢實現多表關聯更新:
UPDATE 表1
SET 字段2 = (
SELECT TOP 1 表3.字段1
FROM 表2
INNER JOIN 表3 ON 表2.字段2 = 表3.字段2
WHERE 表2.字段1 = 表1.字段1
)
WHERE EXISTS (
SELECT 1
FROM 表2
INNER JOIN 表3 ON 表2.字段2 = 表3.字段2
WHERE 表2.字段1 = 表1.字段1
);
MERGE INTO 表1 AS Target
USING (
SELECT 表1.字段1 AS KeyCol, 表3.字段1 AS NewVal
FROM 表1
INNER JOIN 表2 ON 表1.字段1 = 表2.字段1
INNER JOIN 表3 ON 表2.字段2 = 表3.字段2
) AS Source
ON Target.字段1 = Source.KeyCol
WHEN MATCHED THEN
UPDATE SET Target.字段2 = Source.NewVal;
MERGE 語句在處理複雜更新邏輯時更具可讀性和性能優勢。
SELECT 驗證關聯結果。