1

两个表(Table1Table2)的ID列(T1idT2id如何根据与另一个表中的id列进行比较来更新表中的记录?

Table1,我选择基于条件的一些记录(使用where条款)。现在,我将有一些记录将有ids

我的目标是为ids(在Table1T1id column),这是不存在ids(在Table2T2id columnUpdate那些选定的记录

我尝试以下query

UPDATE [dbo].[Table1] 
    SET 
    Number = '', StartDate = NULL 
    WHERE 
    T1id IN(SELECT T1id FROM [dbo].[Table1] WHERE DATEDIFF(hour, StartDate, DATEADD(MINUTE, 330, GETUTCDATE())) > 7) 

如何包括Table2T2id column用的Table1T1id column更新比较表1的只是记录,如果T1id没有出现在上述queryT2id?谢谢。

回答

3

您可以使用连接在更新语句,所以你可以做这样的事情:

UPDATE T1 
    SET 
    Number = '', StartDate = NULL 
FROM [dbo].[Table1] T1 
LEFT OUTER JOIN Table2 T2 ON T1.id = T2.id 
    WHERE T2.id IS NULL 
    AND DATEDIFF(hour, T1.StartDate, DATEADD(MINUTE, 330, GETUTCDATE())) > 7) 
0

使用除了运营商,同时检查在其他表ID(表2):

UPDATE [dbo].[Table1] 
SET Number = '', 
     StartDate = NULL 
WHERE T1id IN(SELECT T1id 
       FROM [dbo].[Table1] 
       --WHERE Datediff(hour, StartDate, Dateadd(MINUTE, 330, Getutcdate())) > 7) <--Your where cond goes here. 
       EXCEPT 
       SELECT T2id 
       FROM [dbo].[Table2]) 
相关问题