我试图找到一种最快的方法来查找父表中的所有记录,而子表中没有某些记录。例如,我希望查询返回没有男性孩子或根本没有孩子的所有家庭记录。

例子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中这叫什么?
  • 是Access的“主流”功能吗?
    将来会得到支持吗?
  • 在哪里可以找到有关文档
    它(一旦我知道它的名字,这可能会更容易)?

  • 谢谢!

    最佳答案

    示例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/

    10-09 00:26