两个表格(Table1
,Table2
)都有id列(T1id
,T2id
)
从Table1
开始,我根据条件选择了一些记录(使用了where
子句)。现在,我将有一些记录ids
。
我的目标是Update
ids
T1id column
中Table1
ids
中T2id column
所选的记录Table2
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)
在T2id column
)
我尝试了以下Table2
。
T1id column
如何Table1
T1id
与[{1}} T2id
进行比较,仅更新Table1的记录 {{1}上述query
中的{{1}}中不存在?}感谢。
答案 0 :(得分: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)
答案 1 :(得分:0)
在检查其他表格中的ID时使用Except运算符(表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])