我的查询返回此错误ORA-01427:单行子查询返回多行更新,这是我的查询
Update Table_b B
Set B.Material_Desc = (Select A.Material_Desc From Table_a A Where A.PartNo = B.PartNo)
我有两个不同的表:Table_a
和Table_b
,它们都有相同的列PartNo
和Material_Desc
。我希望Material_Desc
中的Table_b
在Material_Desc
等于时更新Table_a
中的PartNo
。
以上查询返回ORA-01427错误,请问任何人都可以更正我的查询吗?
答案 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;