我有一张表,需要使用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)
但是,这是可怕的,可怕的混乱的代码来定义像查询中间的那个右表。我只是在想这件事。必须有更好的方法来做到这一点。我应该建立一个全球临时表吗?或者我只是错过了一些简单的语法,这将使这个工作原来的方式?
我认为创建临时表肯定是做到这一点的更好方法。 –