Почему 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?