gpt4 book ai didi

PostgreSQL 9.5 只从两个表中选择不匹配的记录

转载 作者:行者123 更新时间:2023-11-29 13:19:19 26 4
gpt4 key购买 nike

我有三个表代表一些地理数据和:- 一个有实际数据的,- 一个存储街道名称,- 一个存储街道号码和街道名称(表地址)之间的组合。

我的表中已经有一些地址,为了在第四个表中实现 INSERT INTO SELECT,我正在研究如何构建 SELECT 查询以仅检索地址表中尚不存在的对象。

我尝试了不同的方法,包括 NOT EXISTS 和 id_street IS NULL 条件,但我没能成功。

这是一个例子:http://rextester.com/KMSW4349

谢谢

最佳答案

您可以简单地使用 EXCEPT 删除已经在 address 中的行:

INSERT INTO address(street_number,id_street)
SELECT DISTINCT datas.street_number, street.id_street
FROM datas
LEFT JOIN street USING (street_name)
EXCEPT
SELECT street_number, id_street FROM address;

如果 address 上有并发数据修改,您可能会得到重复项。

为避免这种情况,您需要添加一个唯一约束并使用 INSERT ... ON CONFLICT DO NOTHING

关于PostgreSQL 9.5 只从两个表中选择不匹配的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44518378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com