可能重复:
检索每个组中的最后一条记录
我有一张表,其中包含三个字段和数据。
姓名 , 顶部 , 总计 猫 , 1 , 10 狗 , 2 , 7 猫 , 3 , 20 马 , 4 , 4 猫 , 5 , 10 狗 , 6 , 9
我想Total
为 each选择具有最高值的记录Name
,所以我的结果应该是这样的:
姓名 , 顶部 , 总计 猫 , 3 , 20 马 , 4 , 4 狗 , 6 , 9
我尝试按名称按总顺序分组,但它给出了按结果分组的最高记录。有人可以指导我吗?
可能重复:
检索每个组中的最后一条记录
我有一张表,其中包含三个字段和数据。
姓名 , 顶部 , 总计 猫 , 1 , 10 狗 , 2 , 7 猫 , 3 , 20 马 , 4 , 4 猫 , 5 , 10 狗 , 6 , 9
我想Total
为 each选择具有最高值的记录Name
,所以我的结果应该是这样的:
姓名 , 顶部 , 总计 猫 , 3 , 20 马 , 4 , 4 狗 , 6 , 9
我尝试按名称按总顺序分组,但它给出了按结果分组的最高记录。有人可以指导我吗?
select
Name, Top, Total
from
sometable
where
Total = (select max(Total) from sometable i where i.Name = sometable.Name)
或者
select
Name, Top, Total
from
sometable
inner join (
select max(Total) Total, Name
from sometable
group by Name
) as max on max.Name = sometable.Name and max.Total = sometable.Total
你可以尝试类似的东西
SELECT s.*
FROM sometable s INNER JOIN
(
SELECT Name,
MAX(Total) MTotal
FROM sometable
GROUP BY Name
) sMax ON s.Name = sMax.Name
AND s.Total = sMax.MTotal
或者使用 Exists 子句,它返回两个表中唯一存在的行
SELECT * from sometable T
where exists
(select 1
from (SELECT nombre, max(total) as total FROM sometable TT
GROUP by nombre) TT
where T.name=TT.name
and T.total=TT.total
)