我正在寻找一个类似于此的SQL语句:
INSERT INTO some_table
(a, b, c)
VALUES
('a', 'b', 'c')
RETURNING
a
WHERE NOT EXISTS
(
SELECT
some_column
FROM
another_table
WHERE
some_cond='is_true'
);
上述内容不起作用,因为WHERE NOT EXISTS
不是SELECT FROM
而是INSERT INTO
。只有当另一个表上的select语句没有返回任何内容时,如何才能插入表中?
EDIT2:
更改了数据库模式以包含其他表上的匹配列,并且不匹配匹配的“待插入”列,以使用带有select的子查询来获取预期的功能并使用@ Isaiah3015建议的内容。 / p>
答案 0 :(得分:1)
我想你想要insert . . . select
:
INSERT INTO some_table(a, b, c)
SELECT 'a', 'b', 'c'
FROM dual
WHERE NOT EXISTS (SELECT some_column
FROM another_table
WHERE some_cond = 'is_true'
)
RETURNING a;
答案 1 :(得分:1)
最好的方法是使用您想要选择的内容创建一个INSERT sytanx
INSERT INTO table ( column1, column2, column 3, etc)
SELECT column1, column2, column3, etc from table where condition = 'whatever
condition you want inserted into the table'