2011-10-06 109 views
0

我想從另一個(太長且複雜)查詢的結果更新表(Oracle)。來自另一個select的SQL更新

爲簡單起見,查詢1是我複雜的查詢和返回是這樣的:

Item_ID | Item_Data 
-------------------- 
10   XXX 
20   ZZZZ 
30   SSSS 

我想這樣做

UPDATE MyTable SET MyTable.MyData = Query1.Item_Data where MyTable.MyID = Query1.Item_ID 

我怎麼能做到這一點? 謝謝

回答

2

檢查MERGE INTO子句。我現在不能測試此權利,但它應該是這樣的:

MERGE INTO mytable mt 
USING (your complex query here) cc 
    ON mt.myid = cc.item_id 
WHEN MATCHED THEN UPDATE SET mt.mydata = cc.item_data 
+0

unfortunaetly我得到這個錯誤:[汞] [選擇Oracle JDBC Driver] [甲骨文] ORA-29886:功能不支持域索引 – Achraf

+0

從我讀過的內容來看,這是對包含域索引的表的限制。另一種選擇是更新類型'UPDATE mytable mt SET mydata =(SELECT itemdata FROM(複雜查詢)WHERE item_id = my.myid)'。 – Mike

+0

謝謝,這似乎工作,雖然它非常緩慢。我想我將不得不用編程方式用for循環來完成它 – Achraf