Oracle SQL 从一个 Table 更新到另一个 table 抛出语法错误

Oracle SQL update from one Table to another table throws syntax error

Oracle SQL 从一个 Table 更新到另一个 table 会引发以下简单更新查询的语法错误。

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 标准查询吗?

and whatever i tried is this ANSI standard query ?

没有。 Oracle Oracle 不支持加入更新语句。

在 Oracle 中,您可以通过两种方式实现 -

**合并语句**

合并语句中只有 更新子句

MERGE INTO sales_import s   
USING (SELECT * 
       FROM   retrieveaccountnumber) u 
ON (u.leadid = s.leadid) 
WHEN matched THEN 
  UPDATE SET u.accountnumber = s.accountnumber; 

相关查询

UPDATE sales_import t1
   SET accountnumber  = (SELECT t2.accountnumber  
                         FROM retrieveaccountnumber t2
                        WHERE t1.leadid = t2.leadid )
 WHERE EXISTS (
    SELECT 1
      FROM retrieveaccountnumber t2
     WHERE t1.leadid = t2.leadid );

您可以通过加入这些表来做到这一点:

UPDATE SI
SET AccountNumber = RAN.AccountNumber
FROM RetrieveAccountNumber RAN
JOIN Sales_Import SI ON RAN.LeadID = SI.LeadID;

我会这样写你的sql:

UPDATE Sales_Import SI
SET AccountNumber = (Select RAN.AccountNumber
                 FROM RetrieveAccountNumber RAN
                 WHERE RAN.LeadID = SI.LeadID);