嵌套查询 - 两级过滤

时间:2021-08-01 20:17:35

标签: mysql sql

架构

  • 研究员(ID (PK), )
  • 活动(PID(publication_FK,PK),RID(researcher_FK,PK))
  • 出版物(ID(PK),年份)

PIDRID 中的 Activity 形成其复合 PK,每个分别对应于 PublicationResearcher 表的 FK

查询

对于每位至少发表过 2 篇论文的研究人员,检索他们自 2000 年以来的所有论文

尝试

SELECT PID, RID
FROM Activity
WHERE RID IN (SELECT  RID
  FROM Activity
  GROUP BY RID
  HAVING COUNT(RID) >= 2) 

如何按出版年份过滤此中期结果?

1 个答案:

答案 0 :(得分:0)

您需要加入publications。使用您的方法:

SELECT a.PID, a.RID
FROM Activity a JOIN
     Publications p
     ON p.ID = a.PID
WHERE p.year >= 2000 AND
      a.RID IN (SELECT a2.RID
                FROM Activity a2
                GROUP BY a2.RID
                HAVING COUNT(*) >= 2
               ) ;
相关问题