#mysql
#mysql
Вопрос:
У меня есть запрос:
SELECT
...
(some expression) AS Country
FROM
Sometable
...
GROUP BY Country;
Sometable
имеет столбец с именемCountry
(это нельзя изменить).- Один из столбцов результата назван
Country
(это тоже нельзя изменить).
Это работает (я хочу, чтобы GROUP BY
применялось к столбцу результатов, и MySQL понимает это именно так).
Но он выдает предупреждение:
Warning: Column 'Country' in group statement is ambiguous
Итак, я хочу устранить неоднозначность GROUP BY
. Но единственные квалификаторы, которые я смог найти, — это указать базу данных или таблицу (как в: Sometable.Country
). Было бы неплохо, если бы метка использовалась в двух разных таблицах, или если бы я хотел выбрать экземпляр метки, который поступает из таблицы. Но мне нужен какой-то Select.Country
определитель, чтобы указать, что имя, которое я хочу использовать, является именем из SELECT
предложения, а не из таблицы.
Я нахожу немного странным, что это предупреждение может быть удалено, если я хочу выбрать один из 2 экземпляров метки (столбец таблицы), но не если я хочу выбрать другой (столбец результата).
Ответ №1:
SELECT a,b,c,d, country2 AS country FROM (
SELECT
a,b,c,d,
(some expression) AS Country2
FROM
Sometable
...
GROUP BY Country ) s;
Ответ №2:
Если это выражение, по которому вы хотите сгруппировать, вы бы сделали:
Group By (some expression)
Т.е. не используйте псевдоним в группе By. Используйте само выражение. Единственный другой способ — это инкапсулировать запрос с выражением в производную таблицу / подзапрос.