如何INSERT - 在具有匹配列的另一个表上没有EXISTS?

时间:2017-08-07 20:39:00

标签: sql postgresql

我正在寻找一个类似于此的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>

2 个答案:

答案 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'