Sql server 2008 运行SQL server嵌套更新查询时出错

Sql server 2008 运行SQL server嵌套更新查询时出错,sql-server-2008,sql-update,Sql Server 2008,Sql Update,我试着在论坛上寻找答案,但找不到任何对我有帮助的 我的情况是,我有两个表,一个表中的电子邮件必须根据另一个表中的ID进行更新 我的问题是,我试图运行更新查询,但出现以下错误: Msg 512,级别16,状态1,第1行子查询返回的值超过1 价值当子查询后跟=、!=、时,不允许这样做 不确定您拥有什么样的表结构以及您想要实现什么 如果我猜对了,你可以试试这样: UPDATE A SET Email = (SELECT [Email Address] FROM B WHERE B.ID = A.ID)

我试着在论坛上寻找答案,但找不到任何对我有帮助的

我的情况是,我有两个表,一个表中的电子邮件必须根据另一个表中的ID进行更新

我的问题是,我试图运行更新查询,但出现以下错误:

Msg 512,级别16,状态1,第1行子查询返回的值超过1
价值当子查询后跟=、!=、时,不允许这样做 不确定您拥有什么样的表结构以及您想要实现什么

如果我猜对了,你可以试试这样:

UPDATE A SET Email = (SELECT [Email Address] FROM B WHERE B.ID = A.ID)
WHERE Email = 'abc@def.ghi';

这是您想要的吗(即,将A的电子邮件字段设置为等于B中与A的ID匹配的B的[电子邮件地址])

如果我理解正确,我想您可以这样做:

 UPDATE AAlias
 SET
    Email = AAlias.EmailAdd
 FROM
     A AAlias
 INNER JOIN B AAlias
     ON AAlias.ID = BAlias.ID AND A.Email LIKE 'BLAH BLAH'

希望这有帮助

子查询返回多个值。您可以尝试添加不同的,但只有在所有值都相同的情况下才有效。如果不是,它应该使用哪一个电子邮件地址?我有一套电子邮件,上面写着“abc@def.ghi“在表A中,如果电子邮件abc@def.ghi这是表A中的电子邮件。这是我能想到的最好的了。我不熟悉sql查询。任何帮助或任何想法都将不胜感激。大约有300个带有该地址的电子邮件IDabc@def.ghi在表A中。谢谢马丁的建议。我以后会记住的。谢谢你的回复praveen,但这不是我想要的。谢谢Seramme,这看起来像是我一直在寻找的解决方案。谢谢你纠正我的错误。谢谢你们在这么短的时间内帮助我。
 UPDATE AAlias
 SET
    Email = AAlias.EmailAdd
 FROM
     A AAlias
 INNER JOIN B AAlias
     ON AAlias.ID = BAlias.ID AND A.Email LIKE 'BLAH BLAH'