powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск множества строк(не одной строки) с максимальным значением
8 сообщений из 8, страница 1 из 1
Поиск множества строк(не одной строки) с максимальным значением
    #39579403
dmaytry79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Есть таблица с полями ID,TEAM_ID,MATCH_NUMBER. Возьмём для простоты 3 команды. Таблица может быть заполнена, например,так:
1 | 1 | 1
2 | 2 | 1
3 | 3 | 1
4 | 1 | 2
5 | 2 | 2
6 | 1 | 3
7 | 3 | 2
8 | 3 | 3
9 | 3 | 4

Нужно получить id тех строк, в которых содержится максимум MATCH_NUMBER для каждой из команд. Т.е. 5,6,9.
В документации:
Код: plsql
1.
SELECT ID,TEAM_ID,MATCH_NUMBER FROM my_table WHERE  ID,TEAM_ID,MATCH_NUMBER=(SELECT MAX(MATCH_NUMBER) FROM my_table)


Но это для получения ID только лишь одной строки. А если нужно получить для 1000 строк? В моём примере для простоты только 3.
Как это сделать, непонятно.
Нужна помощь.

P.S. Функция MAX в MySQL ведёт себя очень странно - выбирает ID ПЕРВОЙ записи из набора, а сам максимум может находиться в середине набора. Где логика?
...
Рейтинг: 0 / 0
Поиск множества строк(не одной строки) с максимальным значением
    #39579406
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая свежая и оригинальная, нигде и никогда не решавшаяся задача... убиццо.

FAQ: Выборка первой/последней записи в группах
...
Рейтинг: 0 / 0
Поиск множества строк(не одной строки) с максимальным значением
    #39579408
machetero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может сработает
Код: sql
1.
WHERE MATCH_NUMBER IN (SELECT MAX(MATCH_NUMBER) FROM my_table GROUP BY TEAM_ID)
...
Рейтинг: 0 / 0
Поиск множества строк(не одной строки) с максимальным значением
    #39579410
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
macheteroможет сработает
Код: sql
1.
WHERE MATCH_NUMBER IN (SELECT MAX(MATCH_NUMBER) FROM my_table GROUP BY TEAM_ID)

В таком виде - однозначно нет. Разве что
Код: sql
1.
2.
3.
4.
5.
WHERE (        team_id, match_number) 
   IN ( SELECT team_id, MAX(match_number) 
        FROM my_table 
        GROUP BY team_id
      )
...
Рейтинг: 0 / 0
Поиск множества строк(не одной строки) с максимальным значением
    #39579413
dmaytry79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо большое! Сработало! И если эта задача тривиальна и очень часто встречается, то пора уже пересмотреть движок мускула по поводу функций MIN и MAX. В 99% случаев нужна строка, где максимум(или минимум), а первая строка из группы.
...
Рейтинг: 0 / 0
Поиск множества строк(не одной строки) с максимальным значением
    #39579416
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmaytry79пора уже пересмотреть движок мускула по поводу функций MIN и MAX. В 99% случаев нужна строка, где максимум(или минимум), а первая строка из группы.Подобное не реализовано ни в одной СУБД, включая вполне взрослые промышленные, все вполне себе обходятся оконными функциями... Вам не кажется, что Ваше предложение "пересмотреть" всё же несколько оторвано от реальности?
...
Рейтинг: 0 / 0
Поиск множества строк(не одной строки) с максимальным значением
    #39579418
dmaytry79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, не кажется. Где логика в том, чтобы получать строку, не содержащую макс(мин)? Если это действительно нужно, то можно ввести второй параметр в эту функцию - FIND_MAX_ROW (true/false). В общем, нужна какая-то гибкость в поведении этой функции. Такое чувство, что MySQL не развивается! Неужели это нельзя никак реализовать. Я в это не верю. Просто это никто не хочет дорабатывать.
...
Рейтинг: 0 / 0
Поиск множества строк(не одной строки) с максимальным значением
    #39579422
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmaytry79Неужели это нельзя никак реализоватьМожно. Но нафиг не нужно.
dmaytry79это никто не хочет дорабатывать.Разработчики никогда не станут тратить ресурсы на то, что ХОЧЕТСЯ, пока не реализовано всё, что НЕОБХОДИМО. А с учётом того, что необходимого, но не реализованного, ещё вагон и маленькая тележка - и очень хорошо, что никто не хочет.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск множества строк(не одной строки) с максимальным значением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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