Heim >Datenbank >MySQL-Tutorial >Wie kann ich den Fehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in GROUP BY' in MySQL vermeiden?

Wie kann ich den Fehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in GROUP BY' in MySQL vermeiden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-27 18:51:11339Durchsuche

How Can I Avoid

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn