[MySQL] Сортировка перед GROUP BY
Неужели это невозможно?это элементароно


SELECT `text` FROM `table` GROUP BY `b`На мой взгляд, это бред какой-то.
Что ты надеешься получить этим запросом?
По-моему, уже обсуждалось, что в SELECT можно указывать только те поля, которые присутствуют в GROUP BY.
Если же нужно
получить, например, тот `text`, для которого `a` (при данном `b`) минимальното это можно сделать так:
select t1.b, t1.text from table as t1
where a = (
select MIN(t2.a) from table as t2
where t2.b=t1.b)
По-моему, уже обсуждалось, что в SELECT можно указывать только те поля, которые присутствуют в GROUP BY.
Это в стандарте. А в треде обсуждается MySQL. В нём это можно.
Просто интересно, что возвращает такой запрос в текстовом поле.
Первое значение в выборке?
А, понял. Просто не прочитал хелп в первом посте.
Так там ясно написано - не пользуйтесь этой фишкой для неуникальных значений.
Да. Вот для этого человек и хочет сортировать перед GROUP BY.
Почему ты мыслишь всегда одним запросом?Для упрощения кода и повышения его понятности + увеличения скорости.
то это можно сделать так:Ладно, усложню задачу - а если надо упорядочить по необратимой функции от `a`?
select t1.b, t1.text from table as t1
where a = (
select MIN(t2.a) from table as t2
where t2.b=t1.b)
Если конечно эта функция дает разные значения для разных а.
Да, функция может быть и не инъективной, конечно...
Ты лучше скажи, что тебе нужно, а не ставь теоретические задачки.
В общем-то, конкретные задачи я уже решил, просто интересно, можноли сделать сабж...
Оставить комментарий
kruzer25
Пусть есть таблица с полями `a`,`b` (может повторяться) и `text`В запросе типа SELECT `text` FROM `table` GROUP BY `b` - как можно получить, например, тот `text`, для которого `a` (при данном `b`) минимально?
То есть, что-то типа SELECT `text` FROM `table` ORDER BY `a` ASC GROUP BY `b`?
В мануале ничего не нашёл:
Неужели это невозможно?