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!