我的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
有多个名为杰克的记录,但我希望得到一个最大的" num"值。
我已尝试使用以下查询:
SELECT MAX(num),id,name FROM `employee`
但它返回 id和第一条记录的名称(第一个" Jack")但是最新的数字。
MAX(num) id num
-----------------------
3 1 Jack
当然我可以尝试使用" Order by"但我也希望检索具有最高值的 only 记录。
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
答案 0 :(得分:1)
只需在查询中添加LIMIT 1
子句,例如
SELECT num,id,name FROM `employee` order by num desc LIMIT 1
修改强>:
好的,我误解了你原来的问题。以下列出了num
值最高的每个名称:
SELECT a.* FROM employee a
INNER JOIN (
SELECT name na, MAX(num) nu FROM employee
GROUP BY name ) b ON na=name AND nu=num
点击此处查看演示:http://rextester.com/MOL28087
答案 1 :(得分:0)
您需要对MAX
使用内部查询,例如:
SELECT *
FROM employee
WHERE num = (
SELECT MAX(num) FROM employee
);
这将为您提供所需的结果。
答案 2 :(得分:0)
MAX(column_name
)将返回所有记录的最大值
SELECT emp.* FROM `employee` emp INNER JOIN
(SELECT name,MAX(num) as num FROM `employee` GROUP BY name) tbl
ON emp.`name` = tbl.`name` AND emp.`num` = tbl.`num`
我们使用内部查询找出该名称的名称和最大数量,然后使用名称col和num col上的主表连接。 我们需要提到group by,它给出了该名称的每个num的名称和最大值
我认为,这应该可以解决你的目的