Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何插入-在另一个具有匹配列的表上不存在的位置?_Sql_Postgresql - Fatal编程技术网

Sql 如何插入-在另一个具有匹配列的表上不存在的位置?

Sql 如何插入-在另一个具有匹配列的表上不存在的位置?,sql,postgresql,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' ); 上面的方法不起作用,因为“不存在”后面跟着“选择自”而不是“插入到”。当另一个表上的select语

我正在寻找一个类似以下内容的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'
);
上面的方法不起作用,因为“不存在”后面跟着“选择自”而不是“插入到”。当另一个表上的select语句不返回任何内容时,如何才能插入到表中

编辑2:

将数据库架构更改为在其他表中包含匹配列,并对匹配的“待插入”列进行NOTNULL约束,以使用select的子查询来获得预期的功能,并使用@Isaiah3015建议的功能。

我想您希望插入。选择:

我想你想要插入。选择:


最好的方法是用您想要选择的内容创建一个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'

最好的方法是用您想要选择的内容创建一个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'

对于我的案例,表“Dual”中没有“a”、“b”、“c”。它们是不同的表,没有任何匹配的列。@RobertC.Holland…'在你的问题中,“a”、“b”和“c”是常量字符串,在这个答案中它们是常量字符串。这与dual中的列无关。对于我的情况,表'dual'中没有'a','b','c'。它们是不同的表,没有任何匹配的列。@RobertC.Holland…'在你的问题中,“a”、“b”和“c”是常量字符串,在这个答案中它们是常量字符串。这与dual中的列无关。在我的情况下,两个表是不同的,它们没有匹配的列。如果它们根本没有任何匹配的数据,如何确定不在或不存在?然后您的第一个表将只是选择进入。不需要“不存在”。假设SELECT INTO用于将数据从一个表复制到另一个表中,我不需要该功能。我不知道你所说的-如何确定..不存在的目的是根据你如何看待它来排除或包含特定数据。例如:表1的ID为1,2,3,4,5,6,表2的ID为1,2,3。如果将INSERT写入表1中的Select ID(其中ID不存在/不在表2中的Select ID中),则将插入的值为4,5,6。因为这些是表2中不存在的值。如果表1和表2之间没有如您所说的相关性,您如何确定要排除的内容?对于我的情况,两个表是不同的,它们没有匹配的列。如果它们根本没有任何匹配的数据,您如何确定不存在或不存在?然后您的第一个表将只是选择进入。不需要“不存在”。假设SELECT INTO用于将数据从一个表复制到另一个表中,我不需要该功能。我不知道你所说的-如何确定..不存在的目的是根据你如何看待它来排除或包含特定数据。例如:表1的ID为1,2,3,4,5,6,表2的ID为1,2,3。如果将INSERT写入表1中的Select ID(其中ID不存在/不在表2中的Select ID中),则将插入的值为4,5,6。因为这些是表2中不存在的值。如果表1和表2之间没有如您所说的相关性,您如何确定排除哪些?