Heim >Datenbank >MySQL-Tutorial >Wie kann ich den Fehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in GROUP BY' in MySQL vermeiden?
GROUP BY-Fehler mit MySQL ANY_VALUE vermeiden
Bei der Arbeit mit MySQL-Datenbanken treten häufig Fehler im Zusammenhang mit Gruppierungsvorgängen auf, insbesondere in Versionen vor dem 5.7. Ein solches Problem ist der Fehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in GROUP BY.“ Dieser Fehler tritt auf, wenn versucht wird, nicht aggregierte Spalten in einer GROUP BY-Abfrage abzurufen.
In MySQL 5.7 bietet die Funktion ANY_VALUE eine praktische Lösung für dieses Problem, indem sie den Abruf eines einzelnen beliebigen Werts aus einer nicht aggregierten Spalte ermöglicht. aggregierte Spalte innerhalb einer Gruppe. Diese Funktion ist jedoch in früheren Versionen von MySQL, z. B. 5.6, nicht verfügbar.
Eine Problemumgehung besteht darin, den SQL-Modus ONLY_FULL_GROUP_BY vorübergehend zu deaktivieren, wodurch strengere Anforderungen für GROUP BY-Vorgänge erzwungen werden. Dies kann mit der folgenden Abfrage erfolgen:
SET SESSION sql_mode = '';
Nach dem Deaktivieren des SQL-Modus wird die Abfrage mit der Funktion ANY_VALUE in MySQL 5.6 fehlerfrei ausgeführt. Es ist jedoch wichtig zu beachten, dass diese Problemumgehung zu unvorhersehbaren Ergebnissen führen kann, da nicht aggregierte Spalten in den Abfrageergebnissen zurückgegeben werden können.
Eine zuverlässigere Lösung besteht darin, die SQL-Abfrage selbst so zu ändern, dass sie explizit aggregiert die gewünschten Spalten anzuzeigen oder eine bestimmte Zeile aus der Tabelle auszuwählen. Wenn die Bildertabelle in der Beispielabfrage beispielsweise eine automatisch inkrementierende ID-Spalte enthält, gibt die folgende Abfrage eine Zeile pro Land mit einem vorhersehbaren angezeigten Bild zurück:
SELECT c.id, c.name, i.* FROM countries c LEFT JOIN ( SELECT MIN(id) id, country_id FROM images GROUP BY country_id ) first ON c.id = first.country_id LEFT JOIN images i ON first.id = i.id
Das obige ist der detaillierte Inhalt vonWie kann ich den Fehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in GROUP BY' in MySQL vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!