Сюрприз - это абсолютно корректный запрос в 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 не является ни агрегатной функцией, ни в предложении group by, то указание "выбрать Y" в вашем запросе не имеет смысла начинать. Поэтому я, как механизм базы данных, вернулю все, что захочу, и вам понравится.
Theres даже параметр конфигурации 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?