【问题标题】: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)
      

      【讨论】:

        猜你喜欢
        • 2014-07-06
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多