我不明白你为什么要分组后分组。只做一组就能得到你想要的结果。请看一下这个sqlfiddle以查看它的工作情况。
CREATE TABLE Table1
(`course` varchar(8), `lecturer` varchar(5))
;
INSERT INTO Table1
(`course`, `lecturer`)
VALUES
('comp1111', 'Jim'),
('comp1100', 'Jim'),
('comp1100', 'Jim'),
('infs2321', 'Jess'),
('infs2321', 'Jess'),
('econ1222', 'Helen')
;
select
lecturer, count(*)
from
Table1
group by lecturer desc;
| LECTURER | COUNT(*) |
-----------|----------|--
| Jim | 3 |
| Jess | 2 |
| Helen | 1 |
编辑:
你不需要额外的桌子。要获得最大计数的行,您可以简单地做
select
lecturer, count(*)
from
Table1
group by lecturer
order by count(*) desc
limit 1;
对于 MySQL 或
select top 1
lecturer, count(*)
from
Table1
group by lecturer
order by count(*) desc;
用于 MS SQL 服务器。在我的第一个答案中,我GROUP BY lecturer DESC
的答案与GROUP BY lecturer ORDER BY COUNT(*) DESC
MySQL 中GROUP BY
的ORDER BY
.
如果这不是您想要的,请小心使用MAX()
函数。例如,当您简单地做
select
lecturer, max(whatever)
from
Table1
group by lecturer;
你不一定会得到保持最大值的行。
你也可以做
select
lecturer, max(whatever), min(whatever)
from
Table1
group by lecturer;
看?您只得到函数返回的值,而不是属于它的行。有关如何解决此问题的示例,请参阅此手册条目。
我希望我现在没有让你感到困惑,这可能比你想知道的要多,因为上面是特别针对团体的。我认为您真正想要做的只是按照您想要的方式订购表格,然后只选择一行,如上所述。