2011-09-22 78 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