【发布时间】:2011-04-14 18:01:15
【问题描述】:
不知道为什么这不起作用:
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 字段设置为取消订阅,其中UserSetting 表中的userID 等于用户表中的userID 和用户表中的emailAddress不在另一个表的电子邮件列表中。我可以使用几乎相同的语法在 isUnsubbed 列上运行选择,它工作正常吗?谢谢!
P.S.我在这里查看了其他类似的问题,语法看起来相同,但显然我遗漏了一些东西。
【问题讨论】:
-
为什么它不起作用?您是否有错误消息(如果有,消息是什么?)或者您没有预期的结果(如果有,获得的结果是什么?)?
-
对不起,好问题!它不解析查询..
-
误按回车。无法更新列或表达式“isUnsubscribedFromSystemEmails”。这些列存在并且是可写的..没有权限问题..然后我得到一些其他的东西,错误消息是:无效的对象名称'ust'。 UserSetting 表肯定存在!选择使用相同的连接和 where in 子句给出正确的结果
-
@toddm: "而用户表中的
emailAddress不是 在另一个表的电子邮件列表中" - 你的意思是BadEmailAddresses,如果那么,您的意思是“在来自BadEmailAddresses的电子邮件列表中,用户表中的emailAddress在 的位置”? -
只是关于列名“isUnsubscribedFromSystemEmails”的评论。除了有点长之外,我尽量避免使用负面名称。我更喜欢“SendSystemEmails”之类的东西
标签: sql sql-server-2008 join sql-update in-clause