根据父表中的条件更新相关表中的行

时间:2010-10-12 07:46:56

标签: sql-server-2005 tsql ssms

我有一个表 TABLE1 (父母表)和列

StaffID(PK)
名称
CategoryID(FK)

我还有另一个相关表 TABLE2 (相关表)  列

LeaveID(PK)
StaffId(FK)
起始日期

我想要做的是编写一个T-SQL查询来更新TABLE2中所有行的StartDate列,其中TABLE1中的CategoryID ='3'

TABLE2通过StaffID外键列

与TABLE1相关

2 个答案:

答案 0 :(得分:2)

    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

答案 1 :(得分:2)

您可以在update语句中使用连接,但对于像这样的简单更新,我认为最明确的方法是使用子查询。它避免了关于哪个表正在更新的任何歧义,优化器可能会选择相同的查询计划。

update TABLE2
set StartDate = @SomeDate
where StaffId in (select StaffId from TABLE1
                  where CategoryID = 3)