测试MySQL中是否缺少子记录

测试MySQL中是否缺少子记录,mysql,Mysql,我有两个具有一对多关系的数据库表。是否可以使用单个SQL语句从“一”表中选择“多”表中不存在记录的记录?如果是,怎么做 提前感谢。使用: 您可以从主表中提取多个表中没有任何子表的所有记录,如下所示: 选择T* 来自表1 T 其中T.Id未插入从表2中选择不同的FKID FKID是链接回主表的外键ID。@sreimer:你确定吗?请看:我已经看到它在我的代码中做出了令人印象深刻的改进。这可能取决于嵌套的select结果集的大小。@sreimer:我认为这些查询的关键点是使用NOT EXISTS而不

我有两个具有一对多关系的数据库表。是否可以使用单个SQL语句从“一”表中选择“多”表中不存在记录的记录?如果是,怎么做

提前感谢。

使用:


您可以从主表中提取多个表中没有任何子表的所有记录,如下所示:

选择T* 来自表1 T 其中T.Id未插入从表2中选择不同的FKID


FKID是链接回主表的外键ID。

@sreimer:你确定吗?请看:我已经看到它在我的代码中做出了令人印象深刻的改进。这可能取决于嵌套的select结果集的大小。@sreimer:我认为这些查询的关键点是使用NOT EXISTS而不是NOT IN。NOT EXISTS应该比LEFT JOIN和NOT IN都好。请注意,我关于性能比较的博客文章是针对SQL Server的,这个问题是针对MySQL的。同样的性能特征可能不适用于MySQLPerfect,谢谢。这绝对是我测试中最快的查询。是否有一个最佳方案来选择相反的方案,即有孩子的父母?
select p.id
from parent p
left outer join child c on c.parent_id = p.id
where c.parent_id is null
select *
    from table1
    where not exists (select null 
                          from table2 
                          where MatchingColumn = Table1.MatchingColumn)