我有一張表,需要使用Excel電子表格中的某些數據進行更新。我想沿着這些線路查詢:在同一SQL查詢中使用「WITH」和「UPDATE」語句
WITH temp AS(
(SELECT 'abcd' AS oldvalue, 'defg' AS newvalue FROM dual) UNION
(SELECT .....) --About 300 lines of this, copied from Excel and then formatted into the SELECT statement
)
UPDATE mytable
SET name = (SELECT newvalue FROM temp WHERE mytable.name = temp.oldvalue)
但甲骨文似乎不喜歡有一個「WITH」,並在同一查詢「UPDATE」語句。我收到一個錯誤,說「缺少SELECT關鍵字」。我發現,我可以把SELECT語句中的臨時表的定義,即
SET name = (SELECT newvalue FROM (
(SELECT 'abcd' AS oldvalue, 'defg' AS newvalue FROM dual) UNION
(SELECT .....)
) temp WHERE mytable.name = temp.oldvalue)
但是,這是可怕的,可怕的混亂的代碼來定義像查詢中間的那個右表。我只是在想這件事。必須有更好的方法來做到這一點。我應該建立一個全球臨時表嗎?或者我只是錯過了一些簡單的語法,這將使這個工作原來的方式?
我認爲創建臨時表肯定是做到這一點的更好方法。 –