Heim  >  Artikel  >  Datenbank  >  Warum verursachen meine aggregierten Abfragen ohne GROUP BY Fehler in MySQL 5.7.14?

Warum verursachen meine aggregierten Abfragen ohne GROUP BY Fehler in MySQL 5.7.14?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 03:39:02923Durchsuche

Why Do My Aggregate Queries Without GROUP BY Cause Errors in MySQL 5.7.14 ?

Abfragen ohne GROUP BY aggregieren: Fehler und Lösungen verstehen

Zuvor wurden in älteren Versionen von MySQL Abfragen ohne eine GROUP BY-Klausel für aggregierte Funktionen (z. B. COUNT()) funktionierten oft ohne Probleme. Bei MySQL 5.7.14 und höher kann bei solchen Abfragen jedoch ein Fehler auftreten:

SQLSTATE[42000]: Syntax error or access violation: 1140 In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column [...]

Dieser Fehler ist auf eine Änderung des Standardverhaltens von MySQL zur Anpassung an andere RDBMS-Systeme zurückzuführen, die nicht aggregierte Felder erfordern in der SELECT-Klausel, die in die GROUP BY-Klausel aufgenommen werden soll, wenn aggregierte Funktionen verwendet werden.

Behebung des Fehlers:

Um diesen Fehler zu beheben, haben Sie zwei Möglichkeiten:

1. Passen Sie die MySQL-Einstellungen an:

Sie können zum alten Verhalten zurückkehren, indem Sie die MySQL-Einstellungen ändern. Dies wird jedoch im Allgemeinen nicht empfohlen, da dadurch nicht optimale Abfragepraktiken aufrechterhalten werden.

2. Korrigieren Sie die Abfrage:

Die bevorzugte Lösung besteht darin, die Abfrage so zu ändern, dass nicht aggregierte Spalten in die GROUP BY-Klausel einbezogen werden. Die obige Abfrage kann beispielsweise wie folgt umgeschrieben werden:

SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1

Ausnahme in 5.7.5:

In MySQL-Versionen 5.7.5 und höher ist dies immer noch der Fall Es ist zulässig, nicht aggregierte Spalten aus der GROUP BY-Klausel auszuschließen, wenn die nicht aggregierte Spalte auf einen einzelnen Wert beschränkt wurde (z. B. mithilfe eines Filters in der WHERE-Klausel). Einzelheiten und Beispiele zu dieser Ausnahme finden Sie hier.

Das obige ist der detaillierte Inhalt vonWarum verursachen meine aggregierten Abfragen ohne GROUP BY Fehler in MySQL 5.7.14?. 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