[英]How to update two tables in SQL based on certain condition
我有两个表Table1
和Table2
。
Table1
包含ID (UniqueIdentifier) PK, IsActive (bit), ExpiryDate (DateTime), LastUpdateDT (Datetime)
Table2
包含ID (uniqueIdentifier) PK, Table1ID (FK to Table1), IsActive (bit), LastUpdateDt (datetime)
Table1
Table2
有多个行指向Table1
相同PK。
现在,我声明了一个变量@Now = Getdate()
。 我想从Table1中找到IsActive = 1
和ExpiryDate < @Now
所有ID。 使用这些ID,我想将两个表中的IsActive
标志以及LastUpdateDt
分别LastUpdateDt
为0和@Now
。
如何在SQL中实现此逻辑?
一次,Table1中可以有多行满足此条件。
DECLARE @Now DATETIME
SET @Now = GETDATE()
首先更新Table2
Update Table2
Set IsActive=0,
LastUpdateDT=@Now
WHERE Table1ID in (SELECT ID FROM Table1 WHERE IsActive = 1 AND ExpiryDate < @Now)
立即更新Table1
Update Table1
Set IsActive=0,
LastUpdateDT=@Now
WHERE IsActive = 1 AND ExpiryDate < @Now
CREATE TABLE #temp(ID UniqueIdentifier);
DECLARE @Now DATETIME = Getdate();
UPDATE Table1
SET IsActive = 0,
LastUpdateDt = @Now
OUTPUT inserted.ID INTO #temp(ID)
WHERE IsActive = 1 and ExpiryDate < @Now
UPDATE Table2
SET IsActive = 0,
LastUpdateDt = @Now
WHERE IsActive = 1 and ExpiryDate < @Now
AND Table1ID IN (SELECT ID
FROM #temp)
DROP TABLE #temp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.