2011-09-22 49 views
2

我的查询返回此错误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) 

我有两个不同的表:Table_aTable_b,两者具有相同的列PartNoMaterial_Desc 。当PartNo等于时,我希望Table_b中的Material_Desc更新Table_a中的Material_Desc

上述查询返回ORA-01427错误,请任何人都可以纠正我的查询?

+0

你应该提供你正在使用的数据库服务器的名称。根据它,可以提供更好的答案! – krtek

+0

鉴于错误编号,我会说这是Oracle。 (更好的标记仍然会很好,但是。) –

+0

如果这是Oracle,我的答案根本无法工作......您可以看看:http://stackoverflow.com/questions/2446764/oracle-更新语句与 - 内加入 – krtek

回答

2

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

根据您所使用的SQL数据库上,这样的事情应该更好地工作:

UPDATE Table_b B 
SET B.Materiel_Desc = A.Materiel_Desc 
INNER JOIN Table_a A ON A.PartNo = B.PartNo 

这是可能的,你必须语法适应你的数据库。例如,我认为你不能像MySQL这样做。根据http://dev.mysql.com/doc/refman/5.0/en/update.html你应该这样做:

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

感谢您的回复。请试试这个。 – sailaja

+0

就像我在对你的问题的评论中所说的那样,如果你使用的是Oracle,这将无法工作,更好地遵循我提供的链接。 – krtek