【发布时间】:2012-01-11 21:05:00
【问题描述】:
我已经尝试在论坛中寻找答案,但找不到任何可以帮助我的答案。
我的情况是我有 2 个表,并且必须根据另一个表中的 id 更新一个表中的电子邮件。
我的问题是我正在尝试运行更新查询,并收到此错误:
消息 512,级别 16,状态 1,第 1 行子查询返回超过 1 个 价值。当子查询跟随 =、!=、 时,这是不允许的
、>= 或当子查询用作表达式时。
我知道为什么会出现此错误,但我无法简化我的查询。可以帮忙吗?
UPDATE A
SET Email = (SELECT B.[Email Address]
FROM B
WHERE B.ID IN (SELECT ID
FROM A
WHERE Email LIKE 'abc@def.ghi'))
WHERE A.ID IN (SELECT ID
FROM A
WHERE Email LIKE 'abc@def.ghi')
谁能建议我如何进行?
【问题讨论】:
-
子查询返回多个值。您可以尝试添加
DISTINCT,但这只有在所有值都相同的情况下才有效。如果他们不是应该使用哪个电子邮件地址? -
我在表 A 中有一组由“abc@def.ghi”覆盖的电子邮件,如果电子邮件 abc@def.ghi 是表中的电子邮件,我需要使用表 B 中的电子邮件进行更新答:这是我能想到的最好的。我是 sql 查询的新手。任何帮助或任何思想方向将不胜感激。表 A 中有大约 300 个电子邮件 ID,地址为 abc@def.ghi。
-
感谢马丁的建议。我会记住它以备将来使用。
标签: sql-server-2008 sql-update