我需要能够运行Oracle查询,该查询将插入多个行,但它还会检查是否存在主键,如果存在,则会跳过该插入.就像是:
INSERT ALL
IF NOT EXISTS( SELECT 1 WHERE fo.primary_key='bar' )
(
INSERT INTO
schema.myFoo fo ( primary_key, value1, value2 )
VALUES
('bar','baz','bat')
),
IF NOT EXISTS( SELECT 1 WHERE fo.primary_key='bar1' )
(
INSERT INTO
schema.myFoo fo ( primary_key, value1, value2 )
VALUES
('bar1','baz1','bat1')
)
SELECT * FROM schema.myFoo;
Run Code Online (Sandbox Code Playgroud)
Oracle完全可以实现这一点吗?
如果您可以告诉我如何在PostgreSQL或MySQL中执行此操作,可以获得奖励积分.
insert ignore into table1
select 'value1',value2
from table2
where table2.type = 'ok'
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我收到错误"缺少INTO关键字".
有任何想法吗 ?
我在这里读到语法如下所示:
INSERT
WHEN ([Condition]) THEN
INTO [TableName] ([ColumnName])
VALUES ([VALUES])
ELSE
INTO [TableName] ([ColumnName])
VALUES ([VALUES])
SELECT [ColumnName] FROM [TableName];
Run Code Online (Sandbox Code Playgroud)
但我不想从另一个表中提供值.我只想打字,所以我有:
INSERT
WHEN EXISTS (SELECT 1 FROM FOO WHERE NAME = 'JOE')
THEN
INTO BAR (NAME, AGE)
VALUES ('JOE', 50)
Run Code Online (Sandbox Code Playgroud)
这会产生异常:ORA-00928:缺少SELECT关键字.
如果在另一个表中找到给定值,我想执行插入.