Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Select

576
10 января 2004 года
Xpoft
22 / / 20.08.2000
Всем привет! Вопрос такой - надо выбрать из таблицы максимальные значения поля (назовём его maxcount) по каждой группе ( goodstype).
SELECT id, goodstype, maxcount FROM anytable ORDER BY maxcount DESC - соответственно просто выборка всех значний с сортировкой.
SELECT id, goodstype, maxcount FROM anytable GROUP BY goodstype ORDER BY maxcount DESC - т.е. GROUP BY идёт раньше, то сперва весь результат разбивается на группы а потом уже эти группы сортируются (т.е. берётся первое и единственно значение просто, а оно в свою очередь далеко не всегда максимальное).

И надо было id - соответствовало записи, с этим максимальным значением.

Может кто подскажет грамотный SQL-запрос? Заранее спасибо!
291
10 января 2004 года
gufy
703 / / 08.01.2003
если у тебя mysql>=4.1 то сделай подзапросом, а вообще - способ обычный- берешь топор и рубишь temporary table, в который пихаешь результат твоего запроса, а потом делаешь
SELECT t.* FROM anytable AS t,temp_table AS t1 WHERE t.goodstype=t1.goodstype AND t.maxcount=t1.maxcount

т.е. просто выбираешь те id, у которых при данном goodstype оказалось наибольшее maxcount.

см. также http://forum.codenet.ru/showthread.php?s=&threadid=14628
576
10 января 2004 года
Xpoft
22 / / 20.08.2000
Цитата:
Originally posted by gufy
если у тебя mysql>=4.1 то сделай подзапросом, а вообще - способ обычный- берешь топор и рубишь temporary table, в который пихаешь результат твоего запроса, а потом делаешь
SELECT t.* FROM anytable AS t,temp_table AS t1 WHERE t.goodstype=t1.goodstype AND t.maxcount=t1.maxcount

т.е. просто выбираешь те id, у которых при данном goodstype оказалось наибольшее maxcount.

см. также http://forum.codenet.ru/showthread.php?s=&threadid=14628


Ничего хорошего я в этом способе не вижу. ( И mysql 3.xx.xx).
Есть вариант:
select id,goodstype,max(number) as maxnumbergoods from table group by goodstype order by maxnumbergoods desc;

Но тогда нет привязки к id...

291
11 января 2004 года
gufy
703 / / 08.01.2003
поясняю еще раз. одним запросом такие вещи не делаются. нужен либо подзапрос, который поддерживается только mysql>=4.1 либо дополнительная таблица.

см документацию раздел manual.html#example-Maximum-column-group-row

там все описано включая max-concat trick.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог