mysql - 嵌套不存在
问题描述
Project(pid,name,startYear)
Developer(did,name,hireYear)
WorksOn(pid,did,year)
最初,当我检查此查询时,我认为答案是 D。但是,我想通过我的逻辑来解释为什么 D 是正确的,并且我将不胜感激任何可以确认我的理由是否有效的更正/详细说明对于 D。
最里面的子查询包含所有项目的组合,以及 2015 年从事这些项目的特定开发人员。
该子查询之外的子查询与此相反:2015 年不存在与开发人员相关的项目。
最外面的查询选择了所有工作的开发人员,因为 where 子句在 2015 年没有项目。或者你可以认为没有项目的反面是所有项目。
解决方案
考虑到单词的查询,它是:
- 寻找开发者
SELECT X.did FROM Developer X
- 没有项目的地方
WHERE NOT EXISTS (SELECT * FROM Projects Z ...
- 他们在 2015 年没有工作
WHERE NOT EXISTS (SELECT * FROM WorksOn Y WHERE X.did = Y.did AND Y.pid = Z.pid AND Y.year = 2015)
因此,结果是开发人员在 2015 年参与了所有项目。
推荐阅读
- java - 在同一个项目 JNI 中包含多个库依赖项
- sql - 根据 10 天过滤器生成 SQL 行号
- c# - ASP.NET Core 3.1 Web API JSON 响应骆驼化超过第一个字符
- django - 如何在 Django 活动的 1 天前发送电子邮件提醒?
- prefect - 如何在完美服务器 0.13.5 中配置 graphql url
- javascript - 提交多个输入值
- php - 用于计算行数的函数php在服务器端返回NULL
- flutter - 我无法获得 FirebaseUser 方法...!已经添加了packege Firebse Auth
- cassandra - cassandra 与恢复的节点同步
- ios - 使用 Apple 登录