Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL den Fehler „ist nicht in GROUP BY' aus und wie kann ich ihn beheben?

Warum gibt MySQL den Fehler „ist nicht in GROUP BY' aus und wie kann ich ihn beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-21 02:42:10615Durchsuche

Why Does MySQL Throw an

MySQL-Fehler: „ist nicht in GROUP BY“

MySQL generiert beim Abrufen häufig den Fehler „ist nicht in GROUP BY“. Daten aus Tabellen mithilfe spezifischer Abfragen. Es ist von entscheidender Bedeutung, die Ursache zu verstehen und sie zu beheben.

Hintergrund:

MySQL erfordert, dass alle in der SELECT-Klausel enthaltenen Spalten, mit Ausnahme von Aggregatfunktionen wie COUNT, dies auch tun müssen in die GROUP BY-Klausel aufgenommen werden. Dadurch wird sichergestellt, dass die Ergebnisse auf Datengruppen mit unterschiedlichen Werten in den angegebenen Spalten basieren.

Beispielfehler:

Im bereitgestellten Beispiel tritt der Fehler bei der Verwendung auf die Abfrage:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name` 
ORDER BY `count` DESC LIMIT 0, 25

MySQL erkennt, dass die Spaltenanzahl in GROUP BY nicht vorhanden ist Klausel.

Lösung:

Um diesen Fehler zu beheben, müssen Sie alle Spalten in der SELECT-Klausel in die GROUP BY-Klausel einschließen. In diesem Fall wäre die geänderte Abfrage:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25

Zusätzliche Hinweise:

  • Das Standardverhalten von MySQL besteht darin, teilweises GROUP BY zuzulassen, was zu Problemen führen kann zu nicht deterministischen Ergebnissen.
  • Um vollständiges GROUP BY zu erzwingen, legen Sie fest @@sql_mode='ONLY_FULL_GROUP_BY'.

Das obige ist der detaillierte Inhalt vonWarum gibt MySQL den Fehler „ist nicht in GROUP BY' aus und wie kann ich ihn beheben?. 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