匹配行存在于另一个表中时的UPDATE行

Val*_*l M 13 sql t-sql

我需要更新表上的字段,只有当另一个表中存在匹配的行时才更新,对于主表中当前列为空的所有行.

这是我想要实现的目标的描述:

UPDATE [LenqReloaded].[dbo].[Enquiry] A 
SET [ResponseLetterSent] = 1
WHERE [ResponseLetterSent] IS NULL
   AND EXISTS
       (
           SELECT * FROM [LenqReloaded].[dbo].[Attachment] B 
           WHERE A.[EnquiryID] = B.[EnquiryID]
       )
Run Code Online (Sandbox Code Playgroud)

这在语法上是不正确的.

我无法通过IF EXISTS ...语句对其进行编码,因为我没有[EnquiryID]而没有从表中读取数据.

我该如何格式化UPDATE语句?

Ada*_*Dev 10

你离我不远......

UPDATE A
SET A.[ResponseLetterSent] = 1 
FROM [LenqReloaded].[dbo].[Enquiry] A
WHERE A.[ResponseLetterSent] IS NULL 
    AND EXISTS ( SELECT * FROM [LenqReloaded].[dbo].[Attachment] B WHERE A.[EnquiryID] = B.[EnquiryID] )
Run Code Online (Sandbox Code Playgroud)


Mat*_*ock 5

您需要在更新中使用联接:

UPDATE [LenqReloaded].[dbo].[Enquiry] SET [ResponseLetterSent] = 1 
FROM [LenqReloaded].[dbo].[Enquiry] A 
join [LenqReloaded].[dbo].[Attachment] B on A.[EnquiryID] = B.[EnquiryID] 
WHERE A.[ResponseLetterSent] IS NULL
Run Code Online (Sandbox Code Playgroud)