我正在寻找类似于以下内容的 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 语句不返回任何内容时才插入到表中?
编辑2:
更改了数据库架构以包含其他表上的匹配列,而不是对匹配的“待插入”列的空约束,以使用带选择的子查询来获得预期的功能并使用@Isaiah3015 建议的内容。
最佳答案
最好的方法是用你想要选择的内容创建一个 INSERT 语法
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'
关于sql - 如何 INSERT - WHERE NOT EXISTS 在另一个具有匹配列的表上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45555335/