2015-09-27 1 views
0

У меня есть таблица, которая содержит данные, подобные приведенным ниже. Запрос, который мне нужен, приведет к верхнему результату для Orange и Apple с наивысшим значением cityID.Выбор только самого высокого значения для конкретной записи с другими уникальными столбцами?

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

Это является проблемой. Вам нужно использовать какое-то сравнение. Вот простой способ:

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

Самый короткий код, который может вам помочь.

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