powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск строки с максимальным значением поля в группе.Как?
9 сообщений из 9, страница 1 из 1
Поиск строки с максимальным значением поля в группе.Как?
    #33287241
vitalb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть строки с полями id (primary key), _group, value. Нужно найти id строк с максимальными значениями поля value в каждой группе group. Запрос типа SELECT id, MAX(value) FROM mytable GROUP BY _group требуемого результата не дает, поскольку id возвращается не строки, содержащей максимальное значение value, а первой строки в группе group.
Извращения типа SELECT id, MAX(value) as mv FROM mytable GROUP BY _group HAVING value=mv не работают.

Можно как то все решить одним запросом. мускуль 3.23 таблицы типа MyISAM
...
Рейтинг: 0 / 0
Поиск строки с максимальным значением поля в группе.Как?
    #33287308
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для версии <4.0 нерешабельно.
...
Рейтинг: 0 / 0
Поиск строки с максимальным значением поля в группе.Как?
    #33290440
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT id, value FROM mytable GROUP BY _group ORDER BY value DESC
А так?
...
Рейтинг: 0 / 0
Поиск строки с максимальным значением поля в группе.Как?
    #33324590
lizendir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как это сделать в MySQL 4.1.11?
...
Рейтинг: 0 / 0
Поиск строки с максимальным значением поля в группе.Как?
    #33324854
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lizendirА как это сделать в MySQL 4.1.11?Навскидку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT t1.id, t1.value
  FROM tablename t1
 WHERE t1.id=(  SELECT t2.id
                  FROM tablename t2
	         WHERE t2.group=t1.group
              ORDER BY t2.value DESC
                 LIMIT  0 , 1 )
...
Рейтинг: 0 / 0
Поиск строки с максимальным значением поля в группе.Как?
    #33324894
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnmenДля версии <4.0 нерешабельно.А если создать временную таблицу и потом выполнить LEFT JOIN?

Что-то вроде этого (не проверял):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TEMPORARY TABLE tmp_t2
AS
   SELECT MAX(value) max_value, my_group
     FROM tablename
 GROUP BY my_group;

SELECT t1.id, t1.value
  FROM tmp_t2 LEFT JOIN tablename t1
    ON tmp_t2.max_value=t1.value AND tmp_t2.my_group=t1.my_group
...
Рейтинг: 0 / 0
Поиск строки с максимальным значением поля в группе.Как?
    #33326130
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
set @ch= 0 ; @gr= 0 ;
select id, @ch:=if(@gr=grp, 0 , 1 ) as maxx, @gr=grp from mytable
order by grp,value desc having maxx= 1 ;
http://dev.mysql.com/doc/refman/5.0/en/variables.html
You might get the results you expect, but this is not guaranteed.

Ну и разумеется можно убрать having, а на клиенте профильтровать по полю maxx.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Поиск строки с максимальным значением поля в группе.Как?
    #33328749
Steven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnmenДля версии <4.0 нерешабельно.

Решаемо!!!!

Код: plaintext
SELECT right(MAX(value+id* 0 . 00000000001 ), 5 ) as mv FROM mytable GROUP BY _group


Это если розрядность ИД до 5 розрядов, и точность значений до 5 знаков после комы.
Я проверил у себя (правда на 5.07) работает.
...
Рейтинг: 0 / 0
Поиск строки с максимальным значением поля в группе.Как?
    #33333412
Steven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SELECT _group, right(MAX(value+id* 0 . 00000000001 ), 5 ) as mv, MAX(value) FROM mytable GROUP BY _group

В таком варианте, мы получим
Група, ИД максимального значения, само максимальное значение.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск строки с максимальным значением поля в группе.Как?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]