【问题标题】:Update rows in a related table based on condition in parent table根据父表中的条件更新相关表中的行
【发布时间】:2011-04-24 04:11:51
【问题描述】:
我有一个表 TABLE1(父表),其中包含列
员工 ID (PK)
名称
类别 ID (FK)
我还有另一个相关表TABLE2(相关表)
带列
离开 ID (PK)
员工 ID (FK)
开始日期
我想要做的是编写一个 T-SQL 查询来更新 TABLE2 中所有行的 StartDate 列,其 CategoryID 在 TABLE1 = '3'
TABLE2 通过 StaffID 外键列与 TABLE1 相关
【问题讨论】:
标签:
sql-server-2005
tsql
ssms
【解决方案1】:
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
【解决方案2】:
您可以在更新语句中使用连接,但是对于像这样的简单更新,我认为最清晰的方法是使用子查询。它避免了关于正在更新哪个表的任何歧义,优化器可能会选择相同的查询计划。
update TABLE2
set StartDate = @SomeDate
where StaffId in (select StaffId from TABLE1
where CategoryID = 3)