Mysql 嵌套不存在

Mysql 嵌套不存在,mysql,sql,Mysql,Sql,最初,当我检查这个问题时,我认为答案是D。然而,我想通过我的逻辑来解释为什么D是正确的,我希望任何能够确认我对D的理由是否有效的修正/阐述 最内部的子查询包含所有项目的组合,以及2015年参与这些项目的特定开发人员 该子查询之外的子查询与之相反:2015年不存在与开发人员有关联的项目 最外层的查询选择处理所有项目的开发人员,因为where子句在2015年不存在任何项目。 或者你可以认为没有项目的反面是所有项目。考虑到文字查询,它是: 寻找开发人员 从开发人员X中选择X.did 没有项目的地方 如

最初,当我检查这个问题时,我认为答案是D。然而,我想通过我的逻辑来解释为什么D是正确的,我希望任何能够确认我对D的理由是否有效的修正/阐述

最内部的子查询包含所有项目的组合,以及2015年参与这些项目的特定开发人员

该子查询之外的子查询与之相反:2015年不存在与开发人员有关联的项目

最外层的查询选择处理所有项目的开发人员,因为where子句在2015年不存在任何项目。
或者你可以认为没有项目的反面是所有项目。

考虑到文字查询,它是:

寻找开发人员 从开发人员X中选择X.did 没有项目的地方 如果不存在,请从项目Z中选择*。。。 他们在2015年没有做过 如果不存在,则从Y工作区中选择*,其中X.did=Y.did,Y.pid=Z.pid,Y.year=2015
因此,结果就是2015年所有项目的开发人员。

请不要发布代码的图像,将其作为文本发布,以便我们可以复制和粘贴。感谢您的清晰简洁的解释!这只是一个一般性问题,在评估子查询时,您通常是从内向外看,还是取决于场景?@Trebond它确实取决于场景。就我个人而言,我尽量避免子查询,因为它们对可读性没有任何作用,并且通常比构造类似的联接效率更低。例如,此查询可以更简单地以对的答案的样式编写
Project(pid,name,startYear)
Developer(did,name,hireYear)
WorksOn(pid,did,year)