Det er rigtigt, at denne funktion tillader nogle tvetydige forespørgsler, og uden lyd returnerer et resultatsæt med en vilkårlig værdi valgt fra den kolonne. I praksis plejer det at være værdien fra rækken i gruppen, der fysisk gemmes først.
Disse forespørgsler er ikke tvetydige, hvis du kun vælger kolonner, der er funktionelt afhængige af kolonnen(erne) i GROUP BY-kriterierne. Med andre ord, hvis der kun kan være én distinkt værdi af den "tvetydige" kolonne pr. værdi, der definerer gruppen, er der ikke noget problem. Denne forespørgsel ville være ulovlig i Microsoft SQL Server (og ANSI SQL), selvom den logisk ikke kan resultere i tvetydighed:
SELECT AVG(table1.col1), table1.personID, persons.col4
FROM table1 JOIN persons ON (table1.personID = persons.id)
GROUP BY table1.personID;
MySQL har også en SQL-tilstand for at få den til at opføre sig efter standarden:ONLY_FULL_GROUP_BY
FWIW, SQLite tillader også disse tvetydige GROUP BY-sætninger, men den vælger værdien fra den sidste række i gruppen.
I hvert fald i den version jeg testede. Hvad det vil sige at være vilkårlig er, at enten MySQL eller SQLite kunne ændre deres implementering i fremtiden og have en anden adfærd. Du bør derfor ikke stole på, at adfærden forbliver som den er i øjeblikket i tvetydige tilfælde som denne. Det er bedre at omskrive dine forespørgsler til at være deterministiske og ikke tvetydige. Det er derfor, MySQL 5.7 nu aktiverer ONLY_FULL_GROUP_BY som standard.