mysql - 嵌套不存在

标签 mysql sql

enter image description here

Project(pid,name,startYear)
Developer(did,name,hireYear)
WorksOn(pid,did,year)

最初,当我检查这个查询时,我认为答案是 D。但是,我想通过我的逻辑来解释为什么 D 是正确的,并且我将不胜感激任何可以确认我是否有效的更正/阐述这是我选择 D 的理由。

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

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

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

最佳答案

考虑到单词的查询,它是:

  1. 寻找开发人员
    从开发人员 X 中选择 X.did
  2. 没有项目的地方
    不存在的地方(从项目 Z 中选择 * ...
  3. 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/

相关文章:

php - 从一个表中获取所有数据,有时将该表与另一个表相关联

php - 查找 PostgreSQL 中一组之间的所有行

mysql - 如何仅为指定的多个id顺序更新订单字段的值?

mysql - 将时间和日期转换为mysql日期时间

MySQL应用程序用户和数据库用户

SQL - 聚合函数不能在 postgresql 中嵌套错误

mysql - 根据月份和日期从数据库中获取最新记录

php - 一个用户使用来自多个数据库的信息

mysql - 数据库表中的多级用户

mysql - 用对应字段的值替换某一字段的查询