Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL更新与链接表混淆(子查询返回的值超过1)_Sql_Tsql_Sql Server 2005_Subquery_Sql Update - Fatal编程技术网

SQL更新与链接表混淆(子查询返回的值超过1)

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

数据库有一个表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
    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