我有两个FK oj​​it_code和UserProfile_Id的表。该表包含位字段,我需要更改该值。

我有两个临时表:

第一个表#temp2 :

EmailAddress,
UserProfile_Id

第二张表 #temp :
EmailAddress,
Service_Id

该语句不起作用:
UPDATE MailSubscription SET BitField=1
where UserProfile_id IN ( SELECT UserProfile_Id from #temp2 )
      and Service_id IN ( SELECT ServiceId from #temp)

我知道为什么它不起作用,但是不知道如何修复它才能正常工作。

我需要将Service_Id更改为bitField,其中元组(UserProfile_Id,Service_Id)已加入#temp和#temp2,但我无法在mssql中这样写。

最佳答案

UPDATE M
SET M.BitField=1
from MailSubscription M
inner join #temp2 t2 on M.UserProfile_id=t2.UserProfile_Id
inner join #temp t on M.Service_id=t.ServiceId
and t.EmailAddress=t2.EmailAddress

10-08 15:11