简体   繁体   English

sql server子查询联接错误

[英]sql server subquery join error

I want to update GroupID column of massemail_emailmaster and set it to the value as it is stored on massemail_groupmaster. 我想更新massemail_emailmaster的GroupID列,并将其设置为存储在massemail_groupmaster上的值。 Both table has GroupName column which is I have used to join in the subquery. 这两个表都有GroupName列,这是我用来加入子查询的列。 But the following query is giving me error. 但是以下查询给了我错误。 Error message is incorrect syntax near a3. 错误消息是a3附近的语法不正确。 I don't understand the mistake in syntax here. 我不明白语法错误。 Please help. 请帮忙。

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]) 

DDL of table [dbo]. [massmail_emailmaster] [dbo]. [massmail_emailmaster] DDL [dbo]. [massmail_emailmaster] [dbo]. [massmail_emailmaster]

(ClientID, varchar(50)),
           (uid, int)
           (Name, varchar(100))
           (GroupName, varchar(100))
           (Email, varchar(100))
           GroupId, int)

DDL of table 表的DDL

[dbo]. [massmail_groupmaster]
 (Clientid, varchar(50))
           ,(uid, int)
           ,(groupname, varchar(100))
(GroupId,int))

You can use the alias in the update when you later define it in the from clause. 以后在from子句中定义别​​名时,可以在update使用别名。 (This is a "perverse" situation where the alias is defined after its first use.) (这是一种“错误”的情况,其中别名是其首次使用定义的。)

UPDATE a3
    set GroupId = (select TOP 1 a1.GroupID
                   from [dbo].[massmail_groupmaster] a1
                   where a1.[groupname] = a3.[groupname]
                  )
    FROM [dbo].[massmail_emailmaster] a3;
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]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM