Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den MySQL-Fehler „only_full_group_by' in Abfragen?

Wie behebe ich den MySQL-Fehler „only_full_group_by' in Abfragen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-25 03:06:08544Durchsuche

How to Fix MySQL's

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!

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