<分区>
我的 MySQL 数据库中有如下表:
employee
-------------------------
id name num
1 Jack 1
2 John 1
3 Jack 2
4 Steve 1
5 Jack 3
6 Steve 2
7 Carol 1
我想做的是检索具有最高“num”值的名称。
例如:
5 Jack 3
有多个名为 Jack 的记录,但我想获得具有最大“num”值的记录。
我尝试使用下面的查询:
SELECT MAX(num),id,name FROM `employee`
但它返回第一条记录的id 和名称(第一个“Jack”),但返回最新记录的数量。
MAX(num) id num
-----------------------
3 1 Jack
当然我可以尝试使用“Order by”,但我也想检索具有最高值的唯一记录。
SELECT num,id,name FROM `employee` order by num desc
此查询还将返回所有记录,包括较小的记录。
id name num
-------------------------
3 5 Jack
2 3 Jack
2 6 Steve
1 1 Jack
1 2 John
1 4 Steve
1 7 Carol
当我尝试按名称分组时,它返回按名称分组的记录,但同样只返回小记录。
下面的两个查询给出相同的结果:
SELECT num,id,name FROM `employee` group by name order by num desc
SELECT * FROM
(
select * from `employee` order by num desc
) as employee_tmp
group by name
order by num desc
同样,它只对第一个和最小的记录进行分组。
id name num
1 Jack 1
2 John 1
4 Steve 1
7 Carol 1