Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何选择不在my b表中的记录_Sql_Postgresql - Fatal编程技术网

Sql 如何选择不在my b表中的记录

Sql 如何选择不在my b表中的记录,sql,postgresql,Sql,Postgresql,我有一个表A有100k记录,另一个表B有500k记录。B应该有A的所有100k记录,两个表中都有一个键。如何编写查询以查找a中存在的B中缺少的记录。它不应列出a中没有的所有其他400k记录。如果您关心所有列,则可以使用除之外的: select a.* from a except select b.* from b; 这假设表中的列完全相同,具有兼容的类型,并且以相同的顺序定义。通常最好显式列出列。听起来您可以通过比较键/id来完成。因此,您可以使用反左连接、不存在、在或除。这里有一种方法应该适

我有一个表A有100k记录,另一个表B有500k记录。B应该有A的所有100k记录,两个表中都有一个键。如何编写查询以查找a中存在的B中缺少的记录。它不应列出a中没有的所有其他400k记录。

如果您关心所有列,则可以使用除之外的

select a.*
from a
except
select b.*
from b;

这假设表中的列完全相同,具有兼容的类型,并且以相同的顺序定义。通常最好显式列出列。

听起来您可以通过比较键/id来完成。因此,您可以使用反左连接、不存在、在或除。这里有一种方法应该适合你

SELECT *
FROM
    TableA a
WHERE
    NOT EXISTS(SELECT 1 FROM TableB b WHERE a.Id = b.Id)
这应该可以做到

 select * from a 
 left join b on b.id = a.id
 where b.id is null

编辑你的问题,提供样本数据和期望的结果。你说的“如果可以”是什么意思?