【发布时间】:2014-01-03 02:31:18
【问题描述】:
我想更新 massemail_emailmaster 的 GroupID 列并将其设置为存储在 massemail_groupmaster 上的值。这两个表都有我用来加入子查询的 GroupName 列。 但是以下查询给了我错误。错误消息是 a3 附近的语法不正确。我不明白这里的语法错误。请帮忙。
UPDATE [dbo].[massmail_emailmaster] a3
set a3.GroupId =
(select TOP 1 a1.GroupID from [dbo].[massmail_groupmaster] a1
join [dbo].[massmail_emailmaster] a2
on a1.[groupname] = a2.[groupname]
where a3.[GroupName]=a2.[GroupName])
表[dbo]. [massmail_emailmaster]的DDL
(ClientID, varchar(50)),
(uid, int)
(Name, varchar(100))
(GroupName, varchar(100))
(Email, varchar(100))
GroupId, int)
表的DDL
[dbo]. [massmail_groupmaster]
(Clientid, varchar(50))
,(uid, int)
,(groupname, varchar(100))
(GroupId,int))
【问题讨论】:
-
您能否为您的表提供 DDL 或更好的 SQLFiddle?
-
连接是否应该在集合语法之前?
-
@Mureinik 我添加了两个表的列详细信息。
-
@KayNelson 你能详细说明你的建议吗?我对这个查询真的很困惑。
标签: sql sql-server join nested-query