我试图找到一种最快的方法来查找父表中的所有记录,而子表中没有某些记录。例如,我希望查询返回没有男性孩子或根本没有孩子的所有家庭记录。
例子1
这太慢了:
选择*从家庭
不包括Families.FamilyID(从儿童中选择FamilyID,WHERE Children.Gender =“m”)
例子2
这样更快:
选择*从家庭
不存在的地方(从儿童中选择*,其中Children.Gender =“m” AND Children.FamilyID = Families.FamilyID)
例子3
这是最快的,但是我担心要投资,因为我找不到关于它的任何文档。我什至不知道它叫什么。为了更好的称呼,我们一直称其为“匿名查询”。
选择*从家庭
左联接
[SELECT * FROM Children WHERE Gender =“m”]。 AS AliasChildren
ON Families.FamilyID = AliasChildren.FamilyID
在哪里AliasChildren.FamilyID为NULL
所以我的问题是这样的:
将来会得到支持吗?
它(一旦我知道它的名字,这可能会更容易)?
谢谢!
最佳答案
示例3被称为派生表,但是您可以将查询简化为:
SELECT * FROM Families
LEFT JOIN
Children ON Families.FamilyID = Children.FamilyID AND Children.Gender="m"
WHERE Children.FamilyID IS NULL
关于sql - Access 中的SQL帮助–寻找数据的缺失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/752048/