仅选择具有其他唯一列的特定记录的最高值?

时间:2015-09-27 02:25:29

标签: mysql sql group-by max

我的表包含类似于以下内容的数据。我需要的查询将导致具有最高cityID值的Orange和Apple的最高结果。

id | fruit  | attr | cityID | personID 
163 Apple   green   3685    235
163 Apple   red     3145    267
163 Apple   yellow  1522    560
164 Orange  big     1344    147
164 Orange  small   833     2673

我需要的结果是

id | fruit  | attr | cityID | personID 
163 Apple   green   3685    235
164 Orange  big     1344    147

我开始尝试使用

来完成此任务
select 
   fruit_id,
   fruit,
   attr, 
   max(cityID),
   personID
from fruits_cities
    group by
     fruit_id,
     fruit,
     attr, 
     max(cityID),
     personID

2 个答案:

答案 0 :(得分:2)

这是一项挑战。你需要使用某种比较。这是一个简单的方法:

select fc.* 
from fruits_cities fc
where fc.cityId = (select max(CityId)
                   from fruits_cities fc2
                   where fc2.fruit_id = fc.fruit_id
                  );

答案 1 :(得分:1)

可以帮助您的最短代码。

SELECT fruit_id,fruit,attr,max(cityID),personID FROM `fruits_cities` GROUP BY fruit ORDER BY fruit_id