如何根据连接表中的值有效地更新表 只有当ID - 我用来连接两个表的标识符完全匹配时 1到1.我的意思是当连接表只有一个ID到更新的表?
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 = 1的三个记录,其对应于一个ID 在T1。
我想仅在T2中有一条ID = 1的记录时才更新T1。
(我想避免加入两次表t2来解决这个问题...)
谢谢!
答案 0 :(得分: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