Обновить строки в связанной таблице на основе условия в родительской таблице - PullRequest
0 голосов
/ 12 октября 2010

У меня есть таблица TABLE1 (PARENT TABLE) со столбцами

StaffID (PK)
Имя
CategoryID (FK)

У меня также есть другая связанная таблица TABLE2 (RELATED TABLE) с колоннами

LeaveID (PK)
StaffId (FK)
StartDate

Я хочу написать запрос T-SQL для обновления столбца StartDate всех строк в TABLE2, у которых CategoryID в TABLE1 = '3'

TABLE2 связан с TABLE1 через столбец внешнего ключа StaffID

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

Вы можете использовать объединение в операторе обновления, но для таких простых обновлений, как этот, я думаю, самый простой способ - использовать подзапрос. Это позволяет избежать двусмысленности относительно того, какая таблица обновляется, и оптимизатор, вероятно, выберет тот же план запроса.

update TABLE2
set StartDate = @SomeDate
where StaffId in (select StaffId from TABLE1
                  where CategoryID = 3)
2 голосов
/ 12 октября 2010
    UPDATE TABLE2 T2 
       SET T2.StartDate = '10/10/2010' // YOUR NEW DATE
INNER JOIN TABLE1 T1 ON T1.StaffID  = T2.StaffID 
     WHERE T1.CategoryID = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...