PostgreSQL 匹配表之间的多个值

标签 postgresql syntax

我有这个查询要从 temptab

中插入 mytab 中不存在的数据
 INSERT INTO mytab SELECT * FROM temptab 
  WHERE NOT EXIST (SELECT  * FROM mytab WHERE 
    (mytab .col1= temptab .col1 AND mytab .col2=temptab .col2))  

我想知道是否有任何其他方式来编写此查询的条件部分,即最后一条语句。
上面的查询工作得很好,但在匹配更多列时变得太长了。所以我在想是否有类似的格式

 mytab.(col1,col2,...,coln)=temptab.(col1,col2,...,coln)  

我需要匹配如此多的列,因为这些列的组合用作我的表的主键。类似地,存在更多的表。

任何意见表示赞赏。

附言:请不要犹豫改进查询。

最佳答案

INSERT INTO
  mytab
SELECT
  *
FROM
  temptab 
WHERE
  (temptab) NOT IN (
    SELECT (mytab) FROM mytab
  );

关于PostgreSQL 匹配表之间的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8700318/

相关文章:

c - 如何从用户那里获取包含由空格分隔的字符串和整数的输入?

ruby-on-rails - 如何在 Active Record POSTGRES 中使用 BETWEEN 搜索字符串数组,

javascript如何初始化对象使用数组

flutter - 什么?在 Dart 中做什么?

Python - 元组分配是否有 "don' t care"符号?

python - 未定义的语法错误?

Python OS PostgreSQL 和引用

ruby-on-rails - Gitlab 架构 - Rails Postgresql

postgresql - 加入几个表 : table specified more than once error

sql - SQL中的TRIM函数可以更精确吗?