PostgreSQL匹配表之间的多个值

时间:2012-01-02 11:35:28

标签: postgresql syntax

我有这个查询来插入来自mytab

temptab内不存在的数据
 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)  

我需要匹配这么多列,因为这些列的组合可以作为我的表的主键。类似地,还有更多的表。

任何观点赞赏。

P.S。:不要犹豫,改进查询。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

你可以这样写:

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