Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den MySQL-Fehler „only_full_group_by' in Abfragen?
MySQL „only_full_group_by“ Fehlerbehebung und Lösung
MySQL Version 5.7 führte den SQL-Modus „only_full_group_by“ ein, der dazu führte, dass einige Abfrageanweisungen, die zuvor normal ausgeführt wurden, Fehler meldeten. Dieser Fehler tritt auf, wenn die SELECT-Liste nicht aggregierte Spalten enthält, die nicht in der GROUP BY-Klausel aufgeführt sind und keine funktionale Abhängigkeit von den Spalten in der GROUP BY-Klausel haben.
Die Lösung besteht darin, die Spalte group_id
zur GROUP BY-Klausel hinzuzufügen, sodass die Abfrageanweisung dem Modus „only_full_group_by“ entspricht. Dadurch wird sichergestellt, dass es für jede unterschiedliche Kombination von group_id
und group_name
nur eine Ergebniszeile gibt.
Best Practice besteht darin, alle Spalten mit Tabellennamen oder Aliasnamen zu qualifizieren, insbesondere wenn mit mehreren Tabellen gearbeitet wird. Dies hilft, Unklarheiten zu vermeiden und stellt sicher, dass die erforderlichen Daten ausgewählt werden.
Das Folgende ist die geänderte Abfrageanweisung, die normal im Modus „only_full_group_by“ ausgeführt werden kann:
<code class="language-sql">SELECT g.group_id AS 'value', g.group_name AS 'text' FROM mod_users_groups g LEFT JOIN mod_users_data d ON g.group_id = d.group_id WHERE g.active = 1 AND g.department_id = 1 AND g.manage_work_orders = 1 AND g.group_name != 'root' AND g.group_name != 'superuser' GROUP BY g.group_id, g.group_name HAVING COUNT(d.user_id) > 0 ORDER BY g.group_name</code>
Es wird nicht empfohlen, den Modus „only_full_group_by“ zu deaktivieren , da dies zur Gewährleistung der Datenintegrität und -genauigkeit beiträgt. Indem MySQL die Einbeziehung nicht aggregierter Spalten in die GROUP BY-Klausel erzwingt, kann es sicherstellen, dass die Ergebnisse korrekt sind und die erwarteten gruppierten Daten widerspiegeln.
Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „only_full_group_by' in Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!