从一个表到另一个表的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标准查询?
答案 0 :(得分:2)
和我试过的是这个ANSI标准查询?
没有。 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 );
答案 1 :(得分:2)
我会写这样的sql:
UPDATE Sales_Import SI
SET AccountNumber = (Select RAN.AccountNumber
FROM RetrieveAccountNumber RAN
WHERE RAN.LeadID = SI.LeadID);
答案 2 :(得分:0)
您可以通过加入这些表来完成此操作:
UPDATE SI
SET AccountNumber = RAN.AccountNumber
FROM RetrieveAccountNumber RAN
JOIN Sales_Import SI ON RAN.LeadID = SI.LeadID;