【发布时间】:2026-01-07 00:45:01
【问题描述】:
从一个表到另一个表的 Oracle SQL 更新会引发以下简单更新查询的语法错误。
UPDATE Sales_Import SI
SET AccountNumber = RAN.AccountNumber
FROM RetrieveAccountNumber RAN
WHERE RAN.LeadID = SI.LeadID;
错误:
Error starting at line 1 in command:
Error at Command Line:2 Column:37
Error report:
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
我相信同样的查询也适用于其他数据库,如 postgres 等。
谁能说出正确的查询?
无论我尝试的是这个 ANSI 标准查询吗?
【问题讨论】:
-
为什么有多个数据库产品标签?这个问题与 teradata 以外的 Oracle 或 mysql 或等等等等有什么关系?
-
@LalitKumarB:我标记了其他数据库,因为我需要其他数据库通用的 ansi 标准查询..你将如何在 ANSI 格式的 oracle 中实现这一点?这同样适用于 teradata
-
@LalitKumarB :在 oracle 中执行后,我改变了我的问题。它抛出同样的错误。我也更新了这个关于 oracle 的问题,以便每个人都可以看看它......
-
不,这不是标准 SQL。 ANSI SQL 不允许在
UPDATE(或DELETE)语句中使用任何连接。 -
UPDATE (SELECT table1.accountno as OLD, table2.accountno as NEW FROM table1 INNER JOIN table2 ON table1.LeadID = table2.LeadID ) temp SET temp.OLD = temp.NEW使用 Inner Join 试试这个