PostgreSQL查询键名不同的两个表的主键差集方法
PostgreSQL跨表差集查询实现方案
方法1:使用NOT EXISTS(性能最优,适合大数据量表查询)
仅存在于表A、不存在于表B的主键查询
SELECT id AS 仅A存在的主键 FROM 表A WHERE NOT EXISTS ( SELECT 1 FROM 表B WHERE 表B.volume_id = 表A.id );
对应你提供的示例数据,查询结果为
a2
仅存在于表B、不存在于表A的主键查询
SELECT volume_id AS 仅B存在的主键 FROM 表B WHERE NOT EXISTS ( SELECT 1 FROM 表A WHERE 表A.id = 表B.volume_id );
对应你提供的示例数据,查询结果为
b1
方法2:使用EXCEPT运算符(语法更简洁,PostgreSQL原生支持)
仅A存在的主键
SELECT id FROM 表A EXCEPT SELECT volume_id FROM 表B;
仅B存在的主键
SELECT volume_id FROM 表B EXCEPT SELECT id FROM 表A;
内容的提问来源于stack exchange,提问作者The Baron
相关产品推荐
相关产品推荐

