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?

Warum gibt MySQL den Fehler „Expression of SELECT List Not in GROUP BY Clause' aus und wie kann ich ihn beheben?

Barbara Streisand
Barbara StreisandOriginal
2024-11-28 07:53:14307Durchsuche

Why Does MySQL Throw a

So beheben Sie den Fehler „Ausdruck der SELECT-Liste nicht in der GROUP BY-Klausel“ in MySQL

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!

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