ORA-01427:单行子查询返回多行更新... ??救命?

时间:2011-09-22 03:30:39

标签: sql

我的查询返回此错误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。我希望Material_Desc中的Table_bMaterial_Desc等于时更新Table_a中的PartNo

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

1 个答案:

答案 0 :(得分:2)

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

根据您使用的SQL数据库,这样的事情应该更好:

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

您可能必须使语法适应数据库。例如,我认为你不能用MySQL这样做。根据{{​​3}}你应该这样做:

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