Project(pid,name,startYear)
Developer(did,name,hireYear)
WorksOn(pid,did,year)
最初,当我检查这个查询时,我认为答案是 D。但是,我想通过我的逻辑来解释为什么 D 是正确的,并且我将不胜感激任何可以确认我是否有效的更正/阐述这是我选择 D 的理由。
最里面的子查询包含所有项目以及 2015 年参与这些项目的特定开发人员的组合。
该查询之外的子查询与此相反:2015 年不存在与开发人员关联的项目。
最外面的查询选择了所有项目的开发人员,因为 where 子句在 2015 年没有任何项目。 或者你可以认为没有项目的反义词是所有项目。
最佳答案
考虑到单词的查询,它是:
- 寻找开发人员
从开发人员 X 中选择 X.did
- 没有项目的地方
不存在的地方(从项目 Z 中选择 * ...
- 2015 年他们没有从事哪些工作
WHERE NOT EXISTS(SELECT * FROM WorksOn Y WHERE X.did = Y.did AND Y.pid = Z.pid AND Y.year = 2015)
因此,结果是开发人员在 2015 年参与了所有项目。
关于mysql - 嵌套不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55945470/