Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL den Fehler „Expression of SELECT List Not in GROUP BY Clause' aus und wie kann ich ihn beheben?
In MySQL kann das Ausführen von Abfragen manchmal zu Fehlern im Zusammenhang mit dem sql_mode führen Einstellung. Ein solcher Fehler ist:
#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
Dieser Fehler tritt auf, wenn eine Abfrage eine Spalte in der SELECT-Liste enthält, die nicht in der GROUP BY-Klausel enthalten und nicht aggregiert ist (z. B. mit SUM, COUNT usw.). ). Um dieses Problem zu beheben, muss die Abfrage geändert werden, um die nicht aggregierte Spalte in die GROUP BY-Klausel aufzunehmen oder sie zu aggregieren.
In der bereitgestellten MySQL-Abfrage:
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 order by libelle asc
Die nicht -aggregierte Spalte ist disponible_v. Um den Fehler zu beheben, fügen Sie ihn der GROUP BY-Klausel hinzu:
... GROUP BY libelle, disponible_v ...
Alternativ aggregieren Sie disponible_v mit einer Funktion wie SUM oder AVG:
... GROUP BY libelle HAVING SUM(disponible_v) > 0 ...
Für MySQL-Versionen vor 8.0 , müssen Sie möglicherweise die sql_mode-Einstellung in der MySQL-Konfigurationsdatei /etc/mysql/conf.d/mysql.cnf anpassen, indem Sie Folgendes hinzufügen Folgende Zeilen:
[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
Starten Sie MySQL neu, nachdem Sie die Änderungen an der Konfigurationsdatei vorgenommen haben.
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL den Fehler „Expression of SELECT List Not in GROUP BY Clause' aus und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!