Sql 如何插入-在另一个具有匹配列的表上不存在的位置?
我正在寻找一个类似以下内容的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语
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之间没有如您所说的相关性,您如何确定排除哪些?