我希望更新GroupID列的massemail_emailmaster,并将其设置为存储在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))发布于 2013-12-15 19:45:48
以后在update子句中定义别名时,可以在from中使用它。(这是一种“不正常”的情况,别名是在第一次使用之后定义的。)
UPDATE a3
set GroupId = (select TOP 1 a1.GroupID
from [dbo].[massmail_groupmaster] a1
where a1.[groupname] = a3.[groupname]
)
FROM [dbo].[massmail_emailmaster] a3;发布于 2013-12-15 19:03:21
UPDATE a2
SET a2.GroupId = (SELECT TOP 1 a.GroupID
FROM [dbo].[massmail_groupmaster] a
INNER JOIN [dbo].[massmail_emailmaster] b
ON a.[groupname] = b.[groupname]
)
FROM [dbo].[massmail_emailmaster] a2
WHERE a.[groupname] = a2.[groupname]https://stackoverflow.com/questions/20598406
复制相似问题