Как MySQL решает, какой идентификатор вернуть в группу по выражению? - PullRequest
3 голосов
/ 20 сентября 2009

Как этот:

SELECT id, count (*), компания ОТ jobs Компания GROUP BY

Где id - это первичный ключ jobs

1 Ответ

2 голосов
/ 20 сентября 2009

Аналогичный вопрос:

Почему MySQL разрешает запросы «группировать по» БЕЗ агрегатных функций?

Это специфично для MySQL и не является стандартом ANSI SQL. Большинство других механизмов баз данных не допускают столбцы, по которым не группируются или не выполняются агрегатные функции.

Кажется, MySQL сохраняет значение первой строки, соответствующее критериям.

Агрегирующая функция, которая имеет такое поведение, является FIRST (), и, хотя MySQL реализует ее, это похоже на поведение по умолчанию для столбцов, которые не сгруппированы, и которые не выполняются через любую другую агрегатную функцию.

В стандарте ANSI SQL вы должны сделать:

SELECT FIRST(jobtitle), company FROM jobs GROUP BY company;

Тогда как в MySQL вы могли бы просто (однако стандарт ANSI работает так же хорошо):

SELECT jobtitle, company FROM jobs GROUP BY company;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...