Обновление T-sql только при сопоставлении с объединенной таблицей 1 к 1 - PullRequest
1 голос
/ 22 января 2012

Как я могу эффективно обновить таблицу, основываясь на значениях из таблицы объединения, только когда ID-идентификатор, который я использую для объединения обеих таблиц, идеально подходит от 1 до 1. Я имею в виду, когда объединенная таблица имеет только один идентификатор для обновленной таблицы?

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 есть три записи идентификатора = 1, который соответствует одному идентификатору в T1.

И я хотел бы обновить T1 только тогда, когда в T2 есть одинзапись с идентификатором = 1.

(я бы хотел не объединять дважды таблицу t2 для решения этой задачи ...)

Спасибо!

1 Ответ

4 голосов
/ 22 января 2012
;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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...