Sie führen eine group by
durch (3 Spalten) mit 5 Spalten nicht aggregierter Spalten in der Auswahlliste. Es spielt auch keine Rolle, es gibt keine Aggregate in der Spaltenausgabe.
MySQL behandelt das als distinct
(für die 3 Spalten) und bringt die erste Zeile zurück, auf die es im MRU-Cache stößt, und wenn kein Cache vorhanden ist, die ersten, die im Clustered-Index oder in der physischen Reihenfolge gefunden wurden, um die 2 nicht gruppierten Spalten zu erfüllen.
Mit anderen Worten, es ist ein Benutzerfehler. Ein Schnafu. Ich empfehle, Ihre Absicht mit GROUP BY
zu bereinigen .
Etwas verwandt, lesen Sie eine aktuelle Antwort von mir hier
bezogen auf ONLY_FULL_GROUP_BY
. Siehe am Ende dieses Links MySQL Handling of GRUPPIEREN NACH
was meiner Ansicht nach eine Beschönigung der wirklichen Probleme und Nicht-Standards ist, die MySQL zuließ und die unerwartete und schwer zu erklärende Daten von Verstößen gegen diesen Standard lieferten.
Was hat das MySQL-Entwicklerteam also getan? Sie haben den Standard standardmäßig (ab Version 5.7) implementiert, um die Arten von Abfragen zu verbieten, die Sie gerade ausgeführt haben.
Bearbeiten1
Ihre Suchanfrage ohne GROUP BY
aber mit einer order by newGroups.id,people.id
, auf einem Server der Version 5.7.14: