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

标签 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 语句不返回任何内容时才插入到表中?

编辑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/

相关文章:

sql - 在 SQL Server SELECT 语句中使用 CASE 时消除 NULL

java - 如何将多列与其他列一起以 JSON 形式返回

sql - 使用 if/else 列值,选择不同的表和列

sql - 使用连接构建复杂的 SQL 查询

c# - Postgres bytea 列返回字符串(字符数组)而不是字节数组

sql - Postgres 序列值插入

java - 如何在Java中使用DAO访问DB

mysql - 如何使用nodemon在Node.js上自动创建mysql数据库?

mysql - 多对多交叉表和一对一交叉表有什么区别

mysql - 使用 MySQL 查询模拟移动时间线