2012-01-22 31 views
1

僅當我用於連接兩個表格的ID - 標識符完全匹配時,我如何纔能有效地基於來自連接表格 的值更新表格 1至1 。我的意思是當連接表只有一個ID到更新表中時?僅當與匹配的表格1至1匹配時,T-sql更新

DECLARE @T1 TABLE (
    ID INT, 
    NAME VARCHAR(10), 
    Age int 
) 
INSERT INTO @T1 VALUES (1, 'Name', null) 

DECLARE @T2 TABLE (
    ID INT, 
    Age int 
) 
INSERT INTO @T2 VALUES (1, 28) 
INSERT INTO @T2 VALUES (1, 29) 
INSERT INTO @T2 VALUES (1, 30) 

在此示例表T2具有三個記錄,其對應於一個ID 在T1的ID = 1的。

我想更新T1僅在T2有ID的= 1

(我想避免接合兩次表T2來解決這個任務...)

一個記錄謝謝!

+0

您希望加入哪三種? –

+0

@OlegDok - 沒有一個。 –

回答

4
;WITH T2 
    AS (SELECT ID, 
       MAX(Age) AS Age 
     FROM @T2 
     GROUP BY ID 
     HAVING COUNT(*) = 1) 
UPDATE @T1 
SET [@T1].Age = T2.Age 
FROM @T1 
     JOIN T2 
     ON [@T1].ID = T2.ID 
+0

+1優雅..... –