Вярно е, че тази функция позволява някои двусмислени заявки и мълчаливо връща набор от резултати с произволна стойност, избрана от тази колона. На практика това обикновено е стойността от реда в групата, която физически се съхранява първа.
Тези заявки не са двусмислени, ако изберете само колони, които са функционално зависими от колоната(ите) в критериите GROUP BY. С други думи, ако може да има само една отделна стойност на колоната "двусмислена" на стойност, която дефинира групата, няма проблем. Тази заявка би била незаконна в Microsoft SQL Server (и ANSI SQL), въпреки че логически не може да доведе до неяснота:
SELECT AVG(table1.col1), table1.personID, persons.col4
FROM table1 JOIN persons ON (table1.personID = persons.id)
GROUP BY table1.personID;
Също така MySQL има SQL режим, за да го накара да се държи според стандарта:ONLY_FULL_GROUP_BY
FWIW, SQLite също позволява тези двусмислени клаузи GROUP BY, но избира стойността от последната ред в групата.
Поне във версията, която тествах. Какво означава да си произволен е, че или MySQL, или SQLite могат да променят своята реализация в бъдеще и да имат различно поведение. Следователно не трябва да разчитате на поведението да остане такова, каквото е в момента в двусмислени случаи като този. По-добре е да пренапишете заявките си, за да бъдат детерминирани, а не двусмислени. Ето защо MySQL 5.7 вече активира ONLY_FULL_GROUP_BY по подразбиране.