SQL更新与链接表混淆(子查询返回的值超过1)
数据库有一个表a和一个表B。a.ID与B.ID链接 我需要将A.Name的所有实例更新为等于B.Catalog,当且仅当这些实例链接为A.ID=B.ID时 仅应更新A.Owner=0的中的条目 我提出的代码是:SQL更新与链接表混淆(子查询返回的值超过1),sql,tsql,sql-server-2005,subquery,sql-update,Sql,Tsql,Sql Server 2005,Subquery,Sql Update,数据库有一个表a和一个表B。a.ID与B.ID链接 我需要将A.Name的所有实例更新为等于B.Catalog,当且仅当这些实例链接为A.ID=B.ID时 仅应更新A.Owner=0的中的条目 我提出的代码是: UPDATE A SET A.Name = (SELECT B.Catalog FROM B, A WHERE (B.ID = A.ID) AND (A.Owner = 0)) WHERE A.ID IN (SELECT B.ID FROM B, A WH
UPDATE A
SET A.Name = (SELECT B.Catalog
FROM B, A
WHERE (B.ID = A.ID) AND (A.Owner = 0))
WHERE A.ID IN (SELECT B.ID
FROM B, A
WHERE (B.ID = A.ID) AND (A.Owner = 0))
错误是“子查询返回了多个值”
(MS SQL 2005添加了“MSG 512,级别16,状态1,第1行”
)。我理解错误告诉我的是什么,我试图将一个值设置为等于SELECT语句返回的多个结果,但我认为我对SQL的了解太少,无法生成正确的代码
任何帮助都将不胜感激。这就是我努力自学的结果!头痛 表
B
中是否可以有1行以上的ID
相同但不同的Catalog
?问题已解决,但仅供澄清:否。表B
中是否可以有1行以上的ID
相同但不同的Catalog
?问题已解决,但我想澄清一下:没有。@ShaneBlake&@Alex Aza感谢你们两位@ShaneBlake和Alex Aza感谢你们两位!
UPDATE A
SET A.Name = B.Catalog
FROM A INNER JOIN B ON A.ID = B.ID
WHERE A.Owner = 0
update A
set A.Name = B.Catalog
from TableA A
join TableB B on
A.Id = B.Id
where A.Owner = 0