Fehler: Detaillierte Erläuterung und Lösung only_full_group_by
In MySQL 5.7 ist der Fehler "Ausdruck 1 der Select List nicht in Gruppen" und "nur" nur_ful_group_by "verwirrend sein. Dieser Artikel zielt darauf ab, dieses Problem zu klären und Lösungen bereitzustellen.
Problemanalyse
5.7 Mit der vorherigen MySQL -Version können die Auswahlliste Spalten einbeziehen, die in der Gruppe by Klausel angezeigt werden, auch wenn die Werte dieser Spalten im Paket unterschiedlich sein können. In Version 5.7 wurde jedoch das Standardverhalten geändert, und dies darf dies nur dann tun, wenn diese Spalten aggregiert sind. Dies wird im Modus "nur_full_group_by" erzwungen.
Problemlösung
Der Fehler zeigt an, dass die Abfrageliste eine kompromisslose Spalte enthält, die keine Funktionsabhängigkeiten zwischen den Spalten in der Spalte in der Gruppe nach Klausel aufweist. Um dieses Problem zu lösen, können Sie die kompromisslosen Spalten löschen oder der Gruppe nach Klausel hinzufügen. Empfohlene Lösung
Für diese spezielle Abfrage wird empfohlen, die Gruppe "Group_ID" nach Klausel hinzuzufügen, um sicherzustellen, dass alle kompromisslosen Spalten mit den Spalten in der Gruppe nach Klausel zusammenhängen:
Andere Vorsichtsmaßnahmen
In mehrerer Abfrage ist es am besten, den Namen der Tabellennamen oder alias Limited List zu verwenden, wie in der empfohlenen Lösung gezeigt.
<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, "nur_full_group_by" auszuschalten, da es nicht kompromisslose Spalten ermöglicht, was zu inkonsistenten Ergebnissen führen kann und unvorhersehbar ist.
Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „only_full_group_by'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!