不知道为什么这不起作用:

UPDATE
    ust
SET
    ust.isUnsubscribedFromSystemEmails = 1
FROM
    UserSetting AS ust
INNER JOIN
    [User] ON ust.userID = [User].userID
AND
    [User].emailAddress IN (SELECT emailAddress FROM BadEmailAddresses)

用简单的英语来说,我试图将isUnsubscribed字段设置为取消订阅,其中userID表中的UserSetting等于用户表中的userID,并且用户表中的emailAddress不在另一个表的电子邮件列表中。我可以使用几乎相同的语法在isUnsubbed列上运行选择,并且工作正常吗?谢谢!

P.S. 我在这里查看了其他类似的问题,并且语法似乎相同,但显然我遗漏了一些内容。

最佳答案

尽管在某些情况下UPDATE ... FROM语法至关重要,但我更喜欢在可能的情况下使用子查询。这会满足您的需求吗?

UPDATE UserSetting
SET isUnsubscribedFromSystemEmails = 1
WHERE userID in (SELECT userID from [User]
                WHERE emailAddress in (SELECT emailAddress FROM BadEmailAddresses))

关于在联接表中使用Join和Where子句的SQL Server 2008更新查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3752876/

10-16 08:14