Sql ORA-01427:单行子查询返回多行更新。。。??帮助

Sql ORA-01427:单行子查询返回多行更新。。。??帮助,sql,Sql,我的查询返回此错误ORA-01427:单行子查询返回多行更新,这是我的查询 Update Table_b B Set B.Material_Desc = (Select A.Material_Desc From Table_a A Where A.PartNo = B.PartNo) 我有两个不同的表:表a和表b,都有相同的列PartNo和MATERY Desc。我希望表b中的MATERY Desc在PartNo等于时更新表a中的MATERY Desc 上面的查询返回ORA-01427错误,有

我的查询返回此错误ORA-01427:单行子查询返回多行更新,这是我的查询

Update Table_b B
Set B.Material_Desc = (Select A.Material_Desc From Table_a A Where A.PartNo = B.PartNo)
我有两个不同的表:表a和表b,都有相同的列PartNo和MATERY Desc。我希望表b中的MATERY Desc在PartNo等于时更新表a中的MATERY Desc


上面的查询返回ORA-01427错误,有人能纠正我的查询吗?

问题是子查询返回的是一大堆行,而您应该只有一行。你不能这样做

根据您正在使用的SQL数据库,类似这样的操作应该会更好:

UPDATE Table_b B
SET B.Materiel_Desc = A.Materiel_Desc
INNER JOIN Table_a A ON A.PartNo = B.PartNo
您可能必须根据数据库调整语法。例如,我认为MySQL不能这样做。根据你的想法,你应该做:

UPDATE Table_b, Table_A
SET Table_b.Materiel_Desc = Table_A.Materiel_Desc
WHERE Table_b.PartNo = Table_a.PartNo;

您应该提供正在使用的数据库服务器的名称。根据它,可以提供更好的答案!根据错误号,我认为这是甲骨文。不过,更好的标签还是不错的。如果这是Oracle,我的答案根本不起作用。。。您可以查看:使用SELECT t1.rowid作为rid合并到表格中,t2.MATERY_Desc FROM Table_b t1 JOIN Table_a t2 ON Table_b.PartNo=Table_a.PartNo ON rowid=rid匹配时,然后更新SET Table_a.MATERY_Desc=Table_b.MATERY_Desc,我刚从上面的链接得到这个查询,这是给我的ORA-00969:缺少关键字错误,请帮助我。谢谢你的回答。我会尝试这个。就像我在评论你的问题时说的,如果你使用Oracle,这将不起作用,最好按照我提供的链接。