Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine MySQL 5.7-Abfrage mit Aggregation ohne eine GROUP BY-Klausel fehl?
Aggregierte Abfrage erfordert GROUP BY in MySQL 5.7
F: Nach dem Upgrade auf MySQL 5.7.14 tritt beim Ausführen einer Abfrage ein Fehler auf ohne eine GROUP BY-Klausel. Die Abfrage, die eine Aggregation (COUNT) und eine nicht aggregierte Spalte in der SELECT-Liste umfasst, funktionierte zuvor auf einem älteren Computer.
A: In MySQL Version 5.7.5 und höher hat sich das Standardverhalten geändert um die Verwendung von GROUP BY beim Aggregieren von Daten zu erzwingen. Das bedeutet, dass bei Verwendung von Funktionen wie COUNT in der SELECT-Klausel alle nicht aggregierten Spalten in die GROUP BY-Klausel einbezogen werden müssen.
Um den Fehler zu beheben, haben Sie zwei Möglichkeiten:
<code class="sql">SELECT id, password, COUNT(id) AS count FROM users WHERE email = :email GROUP BY id, password LIMIT 1</code>
Es ist wichtig zu beachten, dass in MySQL 5.7.5 und höher eine Ausnahme besteht wenn die nicht aggregierte Spalte mithilfe von Filtern in der WHERE-Klausel auf einen einzelnen Wert beschränkt wurde. In solchen Fällen kann die nicht aggregierte Spalte aus der GROUP BY-Klausel ausgeschlossen werden. Weitere Einzelheiten finden Sie in der offiziellen Dokumentation.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine MySQL 5.7-Abfrage mit Aggregation ohne eine GROUP BY-Klausel fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!