Heim  >  Artikel  >  Datenbank  >  Wie behebe ich den MySQL-Fehler „Ausdruck der SELECT-Liste ist nicht in der GROUP BY-Klausel'?

Wie behebe ich den MySQL-Fehler „Ausdruck der SELECT-Liste ist nicht in der GROUP BY-Klausel'?

Linda Hamilton
Linda HamiltonOriginal
2024-11-21 02:24:12433Durchsuche

How to Fix the MySQL

Fehlerbehebung beim Fehler „Ausdruck der SELECT-Liste ist nicht in der GROUP BY-Klausel“

Problem:

Bei der Ausführung von a Wenn Sie eine Abfrage ausführen, die nicht aggregierte Spalten in der GROUP BY-Klausel enthält, stoßen Sie auf Folgendes Fehler:

#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible with sql_mode=only_full_group_by

Grund:

Dieser Fehler tritt auf, wenn Sie nicht aggregierte Spalten in der SELECT-Liste haben, die nicht in der GROUP BY-Klausel enthalten sind. In MySQL Version 5.7.12 ist standardmäßig der SQL-Modus „only_full_group_by“ aktiviert, der strengere Gruppierungsregeln erzwingt.

Lösung:

Um diesen Fehler zu beheben, können Sie entweder :

1. Fügen Sie die nicht aggregierten Spalten zur GROUP BY-Klausel hinzu:

Dadurch wird sichergestellt, dass die Abfrage nur Zeilen zurückgibt, die für alle Spalten in der GROUP BY-Klausel dieselben Werte haben.

SELECT libelle, credit_initial, disponible_v, SUM(montant) AS montant 
FROM fiche, annee, type 
WHERE type.id_type = annee.id_type AND annee.id_annee = fiche.id_annee 
  AND annee = YEAR(CURRENT_TIMESTAMP)
GROUP BY libelle, credit_initial, disponible_v
ORDER BY libelle ASC;

2. Deaktivieren Sie den SQL-Modus „only_full_group_by“:

Dadurch kann die Abfrage Zeilen zurückgeben, die möglicherweise nicht für alle Spalten in der GROUP BY-Klausel dieselben Werte haben.

sudo vim /etc/mysql/conf.d/mysql.cnf

Scrollen Sie zu Ende der Datei und fügen Sie die folgenden Zeilen hinzu:

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Speichern und beenden Sie vim. MySQL neu starten:

sudo service mysql restart

Nach dem Neustart von MySQL sollte die Abfrage ohne Fehler erfolgreich ausgeführt werden.

Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „Ausdruck der SELECT-Liste ist nicht in der GROUP BY-Klausel'?. 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