我试过在论坛中寻找答案,但找不到任何可以帮助我的答案。
我的情况是我有2个表,并且必须根据另一个表中的ID更新一个表中的电子邮件。
我的问题是我正在尝试运行更新查询,并收到此错误:
Msg 512,Level 16,State 1,Line 1 Subquery返回的值超过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')
有人可以建议我如何继续吗?
答案 0 :(得分:1)
不确定您拥有哪种表格结构以及您希望实现的目标。
如果我猜对了,你可以尝试这样的事情:
UPDATE A SET Email = (SELECT [Email Address] FROM B WHERE B.ID = A.ID)
WHERE Email = 'abc@def.ghi';
这是你想要的(也就是说,将A的电子邮件字段设置为等于B的B的[电子邮件地址]与A的ID匹配)?
答案 1 :(得分:1)
如果我理解正确,我认为你可以这样:
UPDATE AAlias
SET
Email = AAlias.EmailAdd
FROM
A AAlias
INNER JOIN B AAlias
ON AAlias.ID = BAlias.ID AND A.Email LIKE 'BLAH BLAH'
希望这会有所帮助!!