2016-03-22 3 views
1

Я нашел минимальный почтовый индекс для каждого района, и теперь хочу найти максимум всех этих минимальных почтовых индексов. Я застрял в том, как делать максимум, сохраняя при этом другие части.вложенные запросы выбора - база данных mysql sakila

select 
    district, 
    postal_code, 
    min(postal_code) from address 
group by district 
having district is not null and district !="" and postal_code>0 
order by district; 

result

+0

Вы выбираете столбец 'postal_code', который не находится в списке' GROUP BY'. Вы должны это исправить. –

ответ

1

Если только max(min_postal_code) необходимо, используйте следующее заявление.

select max(min_postal_code) 
from (
    select district, min(postal_code) AS min_postal_code 
    from address 
    where district is not null and district !="" and postal_code>0 
    group by district 
    order by district) t 

Если название района с MAX(min_postal_code) также необходимо. Используйте следующий оператор.

select * 
from (select district, min(postal_code) AS min_postal_code 
    from address 
    where district is not null and district !="" and postal_code>0 
    group by district) t 
where t.min_postal_code = 
(
    select max(min_postal_code) 
    from (select district, min(postal_code) AS min_postal_code 
     from address 
     where district is not null and district !="" and postal_code>0 
     group by district) t2 
); 
+0

да это работает! вы можете объяснить t на последней строке (только что начал использовать MySql) – nkart1

+0

Что делать, если я хочу также выбрать соответствующее название района? Я попытался это: выберите район, макс (min_postal_code) из ( выберите район, мин (postal_code) AS min_postal_code от адреса , где район не утративший район = "" и POSTAL_CODE> 0 группы по районам ! заказ по районам) t; , но название района im становится неправильным (максимальное значение верно, хотя – nkart1

+0

Обновлено сообщение. Попробуйте еще раз. –

Смежные вопросы