我已经回答并阅读了许多有关获得每组最多n个问题的问题,但现在发现自己需要相反的建议。
我有一个结果集,该结果集显示了学生,日期和项目,这些数据表示在指定日期哪些学生在从事项目。
我想看到当天有多位学生从事某个项目的行。因此,如果我的结果集如下所示:
| student | date | project | +---------+------------+---------+ | 1 | 2014-12-04 | 1 | | 2 | 2014-12-04 | 1 | | 3 | 2014-12-04 | 1 | | 1 | 2014-12-03 | 1 |
我只希望看到前三行,所以我可以看到1,2,3学生在同一天共同完成了同一项目。我可以这样过滤:
GROUP BY date, project HAVING COUNT(*) > 1
但随后仅返回一行。
您可以将现有查询用作子查询并获取结果
SQL FIDDLE DEMO
SELECT * from Table1 T1 JOIN ( SELECT date, project from table1 group by date, project having count(*) >1 ) t on t1.date = t.date and t1.project = t.project