我试图找到最快的方法来查找父表中没有子表中某些记录的所有记录。例如,我希望查询返回没有男孩或根本没有孩子的所有家庭记录。
示例 1
这是非常缓慢的:
SELECT * FROM Families
WHERE Families.FamilyID NOT IN(SELECT FamilyID FROM Children WHERE Children.Gender="m")
示例 2
这更快:
SELECT * FROM Families
WHERE NOT EXISTS(SELECT * FROM Children WHERE Children.Gender="m" AND Children.FamilyID = Families.FamilyID)
示例 3
这是最快的,但我担心投资它,因为我找不到任何文档。我什至不知道它叫什么。由于缺少更好的术语,我们一直将其称为“匿名查询”。
SELECT * FROM Families
LEFT JOIN
[SELECT * FROM Children WHERE Gender="m"]。AS AliasChildren ON Families.FamilyID=AliasChildren.FamilyID
WHERE AliasChildren.FamilyID 为 NULL
所以我的问题是:
- 在示例 3 中这个东西叫什么?
- 是不是将来会支持的Access的“主流”功能?
- 我在哪里可以找到它的文档(一旦我知道它叫什么,这可能会更容易)?
谢谢!