我试图将数据合并到数据库中,但没有表就不能,我不想创建一个临时表,然后再删除
MERGE INTO target_table target
USING ('0101-2019' as date, 1515 as random_data, 9595 as more_random_data) source
ON (target.date= source.date)
WHEN MATCHED THEN
UPDATE SET target.date = source.date,
target.random_data = source.random_data,
target.more_random_data = source.more_random_data
WHEN NOT MATCHED THEN
INSERT (date, random_data, more_random_data)
VALUES (source.date, source.random_data, source.more_random_data);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,如果我不使用 Oracle SQL Developer,我可以找到一种可行的方法,但我无法将其翻译为 Oracle
MERGE target_table AS target
USING (VALUES ('0101-2019', 1515, 9595))
AS source(date, random_data, more_random_data)
ON target.date= source.date
WHEN MATCHED THEN
UPDATE SET target.date = source.date,
target.random_data = source.random_data
target.more_random_data = source.more_random_data
WHEN NOT MATCHED BY target THEN
INSERT (date, random_data, more_random_data)
VALUES (source.date, source.random_data, source.more_random_data)
WHEN NO TMATCHED BY source THEN
DELETE
Run Code Online (Sandbox Code Playgroud)
不要问我这会在哪里起作用,这是我从为适合我的情况而编写的示例中找到的一些内容,但由于我使用 Oracle 的 SQL Developer,它对我不起作用。
小智 5
Oracle 仍然不支持标准 VALUES 行构造函数。您需要使用以下解决方法select from dual:
USING (
select '0101-2019' as date, 1515 as random_data, 9595 as more_random_data
from dual
) source
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1563 次 |
| 最近记录: |