根据查询结果更新表中的字段

时间:2015-11-08 15:24:12

标签: sql sql-server

我写了这个查询:

SELECT DISTINCT EMER_EmployeeID
FROM   (SELECT [EMER_EmployeeID],
               [EMER_Employee_StatusDateS]
        FROM   [dbo].[EmployeeERP] AS B
        WHERE  [EMER_ClassCode] NOT IN ( 1, 2, 3, 5,
                                         6, 8 )
               AND [EMER_Employee_StatusCode] NOT IN ( 3, 4, 5, 6,
                                                       68, 0, 1, 9 )) AS t
       INNER JOIN [dbo].[MonthlySalary] AS K
         ON K.MS_EmployeeID = T.EMER_EmployeeID
WHERE  K.MS_Month > 2 + ( CAST(CAST(RIGHT('0' + RTRIM(MONTH([EMER_Employee_StatusDateS])), 2) AS FLOAT) AS INT) ) 

这给我一个ID'的列表。

我有另一张桌子 - 叫她TB:

TE_EmployeeID
TE_IsCheck 

我写了这个以使所有TE_IsCheck为零:     更新TB集[TE_IsCheck] = 0

现在,我想根据“大”查询中的列表将字段TE_IsCheck更新为1。我怎样才能做到这一点?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用update。说,像这样:

with ids as (
      <your query here>
     )
update tb
    set TE_IsCheck = 1
    where tb.TE_EmployeeID in (select EMER_EmployeeID from ids);