Здравствуйте, SeLo, Вы писали:
SL>Есть таблица (T1) которую нужно обновить
SL>Поля ID, Status SL>Значения A, 1 SL> B, 2 SL> E, 3
SL>Есть другая таблица (T2), которая содержит IDs:
SL>Поля ID SL>Значения A SL> B SL> C
SL>Нужно в T1 добавить или обновить записи согласно записям в таблице T2. При обновлении Status устанавливается на 1 SL>Т.е. после обработки должно получится в T1:
SL>Поля ID, Status SL>Значения A, 1 -- ничего не делали SL> B, 1 -- изменили статус SL> E, 3 -- ничего не делали SL> C, 1 -- добавили запись
SL>Как такое проще всего сделать в T-SQL (SQl Server от 2005), а то что то через курсоры как-то сложно выходит. SL>Уверен можно очень просто следать.
Если я Вас правильно понял, то у Вас два пути:
UPDATE T SET
T.STATUS=1
FROM DBO.T1 AS T
JOIN DBO.T2 AS X ON T.ID=X.ID
или
MERGE INTO dbo.T1 AS TGT
USING dbo.T2 AS SRC
ON TGT.ID=SRC.ID
WHEN MATCHED THEN UPDATE SET
TGT.STATUS=1
WHEN NO MATCHED THEN INSERT (ID,STATUS) VALUES(SRC.ID,1);