PostgreSQL 匹配表之间的多个值

发布于 2024-12-23 12:45:42 字数 532 浏览 1 评论 0原文

我有这个查询来插入 temptabmytab 中不存在的数据,

 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)  

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

任何意见表示赞赏。

PS:毫不犹豫地改进查询。

I have this query to insert data which is not present inside mytab from temptab

 INSERT INTO mytab SELECT * FROM temptab 
  WHERE NOT EXIST (SELECT  * FROM mytab WHERE 
    (mytab .col1= temptab .col1 AND mytab .col2=temptab .col2))  

I want to know if there is any other way of writing this query's condition part i.e. the last statement.
The above query works absolutely fine but becomes too lengthy when matching many more columns. So I was thinking if there is any kind of format some what like

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

I need to match so many columns since combination of these works as primary key for my table.Similary there exist many more tables.

any views appreciated.

P.S. : don't hesitate to improve the query.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

望喜 2024-12-30 12:45:42
INSERT INTO
  mytab
SELECT
  *
FROM
  temptab 
WHERE
  (temptab) NOT IN (
    SELECT (mytab) FROM mytab
  );
INSERT INTO
  mytab
SELECT
  *
FROM
  temptab 
WHERE
  (temptab) NOT IN (
    SELECT (mytab) FROM mytab
  );
述情 2024-12-30 12:45:42

你可以这样写:

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

you can write it like this:

(mytab.col1, mytab.col2) = (temptab.col1, temptab.col2)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文