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);
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);