Je voert een group by
(3 kolommen) met 5 kolommen met niet-geaggregeerde kolommen in de selectielijst. Ook, niet dat het ertoe doet, er zijn geen aggregaten in de kolomuitvoer.
MySQL behandelt dat als een distinct
(voor de 3 kolommen) en brengt de eerste rij terug die het tegenkomt in de MRU-cache, en als er geen cache is, de eerste die wordt aangetroffen in de geclusterde index of fysieke volgorde om te voldoen aan de 2 niet-gegroepeerde kolommen.
Met andere woorden, het is een gebruikersfout. Een snuf. Ik raad aan om je intentie op te schonen met de GROUP BY
.
Enigszins gerelateerd, lees een recent antwoord van mij Hier
gerelateerd aan ONLY_FULL_GROUP_BY
. Zie onderaan die link MySQL-afhandeling van GROEP OP
wat naar mijn mening een verdoezeling is van de echte problemen en niet-standaarden die MySQL toestond, waardoor onverwachte en moeilijk te verklaren gegevens van schendingen van die standaard werden gemaakt.
Dus wat deed het MySQL-ontwikkelteam? Ze hebben de standaard standaard geïmplementeerd (vanaf versie 5.7) om de typen zoekopdrachten die u zojuist hebt uitgevoerd, niet toe te staan.
Bewerken1
Uw vraag, zonder GROUP BY
maar met een order by newGroups.id,people.id
, op een server met versie 5.7.14: