gpt4 book ai didi

sql - Oracle 上使用内连接更新语句

转载 作者:行者123 更新时间:2023-12-03 04:02:06 26 4
gpt4 key购买 nike

我有一个查询在 MySQL 中运行良好,但是当我在 Oracle 上运行它时出现以下错误:

SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"

查询是:

UPDATE table1
INNER JOIN table2 ON table1.value = table2.DESC
SET table1.value = table2.CODE
WHERE table1.UPDATETYPE='blah';

最佳答案

该语法在 Oracle 中无效。你可以这样做:

UPDATE table1 SET table1.value = (SELECT table2.CODE
FROM table2
WHERE table1.value = table2.DESC)
WHERE table1.UPDATETYPE='blah'
AND EXISTS (SELECT table2.CODE
FROM table2
WHERE table1.value = table2.DESC);

或者您也许能够做到这一点:

UPDATE 
(SELECT table1.value as OLD, table2.CODE as NEW
FROM table1
INNER JOIN table2
ON table1.value = table2.DESC
WHERE table1.UPDATETYPE='blah'
) t
SET t.OLD = t.NEW

这取决于 Oracle 是否认为内联 View 可更新(第二条语句的可更新取决于列出的一些规则 here )。

关于sql - Oracle 上使用内连接更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2446764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com