Почему MySQL позволяет «группировать» запросы без агрегатных функций?

Сюрприз - это совершенно правильный запрос в MySQL:

select X, Y from someTable group by X

Если вы попробовали этот запрос в Oracle или SQL Server, выполучаю естественное сообщение об ошибке:

Column 'Y' is invalid in the select list because it is not contained in 
either an aggregate function or the GROUP BY clause.

Так как же MySQL определяет, какой Y показывать для каждого X? Это просто выбирает один. Из того, что я могу сказать, он просто выбирает первый Y, который он находит. Обоснование заключается в том, что если Y не является ни агрегатной функцией, ни выражением group by, тогда указывается:выберите Y ” в вашем запросе нет смысла начинать с. Поэтому я, как движок базы данных, верну все, что захочу, а выпонравится.

Там'Даже параметр конфигурации MySQL, чтобы отключить эторыхлость».http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by

В этой статье даже упоминается, как MySQL подвергался критике за то, что он не соответствует ANSI-SQL в этом отношении.http://www.oreillynet.com/databases/blog/2007/05/debunking_group_by_myths.html

Мой вопрос:Зачем MySQL был разработан таким образом? Каково было их основание для разрыва с ANSI-SQL?

Ответы на вопрос(6)

Ваш ответ на вопрос