Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Возможно ли повлиять на то какая строчка попадает в результат при GROUP BY? / 6 сообщений из 6, страница 1 из 1
26.08.2018, 16:03
    #39693420
neigenoir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли повлиять на то какая строчка попадает в результат при GROUP BY?
Добрый день

Возможно дичь, подскажите возможно ли это

есть таблица:
Код: sql
1.
SELECT `id`, `group`, `weight` FROM `table`


id group weight1 1 02 2 103 2 204 4 35 4 16 4 2

при группировке по group логично получаю следующее:
Код: sql
1.
SELECT `id`, `group`, `weight` FROM `table` GROUP BY `group`


id group weight1 1 02 2 104 4 3

так вот вопрос: можно ли как то повлиять на то какая именно запись попадет в выдачу при группировке?
например, мне нужно чтобы попадала запись с минимальным значением weight, т.е. третьей строкой в результате была запись с ид 5, чтобы результат выглядел так:

id group weight1 1 02 2 105 4 1

ордер бай тут не помогает, при
Код: sql
1.
SELECT `id`, `group`, `weight` FROM `table` GROUP BY `group` ORDER BY `weight`


получаю ровно тот же результат что и без ордер бай
...
Рейтинг: 0 / 0
26.08.2018, 17:48
    #39693435
neigenoir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли повлиять на то какая строчка попадает в результат при GROUP BY?
есть такое решение

Код: sql
1.
2.
3.
4.
5.
6.
SELECT id, group, weight FROM table
JOIN (
  SELECT group as group_join_id, MIN(weight) as group_join_weight
    FROM table
   GROUP BY group
) ON group_join_id=group AND group_join_weight = weight



т.е. строится вспомогательная таблица с нужными мне парами группа-вес и дальше эти пары используются как фильтр для результата
вот только подозреваю что это сильно по производительности запросов бить будет при большой таблице, ведь да?
...
Рейтинг: 0 / 0
26.08.2018, 19:07
    #39693451
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли повлиять на то какая строчка попадает в результат при GROUP BY?
Про функции min,max Вы, конечно, не слышали...
Да и про having ничего не знаете...
...
Рейтинг: 0 / 0
26.08.2018, 19:14
    #39693453
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли повлиять на то какая строчка попадает в результат при GROUP BY?
neigenoirнужно чтобы попадала запись с минимальным значением weight, т.е. третьей строкой в результате была запись с ид 5Про это целый FAQ есть.
...
Рейтинг: 0 / 0
27.08.2018, 00:38
    #39693485
neigenoir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли повлиять на то какая строчка попадает в результат при GROUP BY?
miksoft ,

большое спасибо.
изучил. из представленных решений мне больше всего подошел с1, который по сути тот же самый что приведен выше.
...
Рейтинг: 0 / 0
04.09.2018, 10:34
    #39697606
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли повлиять на то какая строчка попадает в результат при GROUP BY?
neigenoirДобрый день

Возможно дичь, подскажите возможно ли это

есть таблица:
Код: sql
1.
SELECT `id`, `group`, `weight` FROM `table`


id group weight1 1 02 2 103 2 204 4 35 4 16 4 2

при группировке по group логично получаю следующее:
Код: sql
1.
SELECT `id`, `group`, `weight` FROM `table` GROUP BY `group`


id group weight1 1 02 2 104 4 3

так вот вопрос: можно ли как то повлиять на то какая именно запись попадет в выдачу при группировке?
например, мне нужно чтобы попадала запись с минимальным значением weight, т.е. третьей строкой в результате была запись с ид 5, чтобы результат выглядел так:

id group weight1 1 02 2 105 4 1

ордер бай тут не помогает, при
Код: sql
1.
SELECT `id`, `group`, `weight` FROM `table` GROUP BY `group` ORDER BY `weight`


получаю ровно тот же результат что и без ордер бай

Ты пишешь нелепые, бессмысленные и неправильные запросы (которые тебе по воле судьбы MySQL к сожалению позволяет выполнять), и ещё хочешь, чтобы они работали и как-то логично работали?

Вот простые правила, которые помогут тебе.
группировка без агрегирующих функций не используется никогда.

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


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