如何检查在另一个表中没有具有某些特定值的条目的记录?

thi*_*jan 2 query

例如,如果我们有两个表:表 1 和表 2

表 1 - 主表(所有记录的唯一条目)表 2 - 是一个历史表(其中包含基于时间戳的同一记录的许多条目)(还包含一些特定的字段类型)

我需要检索数据,例如 table1 中的所有数据,其中没有 type = 'Some vaue' 的记录条目

a_h*_*ame 6

我通常将其写为 NOT EXISTS 查询,因为这与问题的措辞一致(“在 table1 中查找 table2 中不存在相应行的所有内容”)

select t1.* 
from table1 t1
where not exists (select *
                  from table2 t2
                  where t1.id = t2.table1_id
                    and type = 'Some Value');
Run Code Online (Sandbox Code Playgroud)

根据您的 DBMS,mcNets 的解决方案可能会更快——这在很大程度上取决于查询优化器,例如在 Oracle 中,它不会有任何区别。