Beheben Sie den Gruppierungsfehler Ausdruck Nr. 1 der SELECT-Liste ist nicht in der GROUP BY-Klausel enthalten und enthält nicht aggregierte Werte in MySQL-Versionen über 5.7

Beheben Sie den Gruppierungsfehler Ausdruck Nr. 1 der SELECT-Liste ist nicht in der GROUP BY-Klausel enthalten und enthält nicht aggregierte Werte in MySQL-Versionen über 5.7

Grund:

MySQL 5.7.5 und höher implementiert die Erkennung funktionaler Abhängigkeiten. Wenn der SQL-Modus only_full_group_by aktiviert ist (was standardmäßig der Fall ist), lehnt MySQL Abfragen ab, deren Auswahllisten, Bedingungen oder Sortierlisten auf nicht aggregierte Spalten verweisen, die nicht in der Gruppierung benannt sind, ohne von ihnen funktional abhängig zu sein. (Vor 5.7.5 hat MySQL keine Funktionsabhängigkeiten erkannt und only_full_group_by war standardmäßig nicht aktiviert. Eine Beschreibung des Verhaltens vor 5.7.5 finden Sie im MySQL 5.6-Referenzhandbuch.)

Führen Sie den folgenden Befehl aus, um den Inhalt von sql_mode anzuzeigen:

mysql> SITZUNGSVARIABLEN ANZEIGEN;
mysql> GLOBALE VARIABLEN ANZEIGEN;
mysql> wähle @@sql_mode;

Es ist ersichtlich, dass die Werte von sql_mode für Sitzung und global sind:

NUR_VOLLSTÄNDIGE_GRUPPE_NUR, STRENGE_TRANS_TABELLEN, KEINE_NULL_IM_DATUM, KEIN_NULL_DATUM, FEHLER_FÜR_DIVISION_DURCH_NULL, KEIN_AUTOMATISCHES_ERSTELLEN_BENUTZER, KEIN_ENGINE_SUBSTITUTION

only_full_group_by Beschreibung:

only_full_group_by: Diese Option verwendet dieselben Gruppenregeln wie Oracle. Die ausgewählten Spalten müssen in der Gruppe sein oder aggregierte Spalten (SUM, AVG, MAX, MIN) sein. Tatsächlich finde ich persönlich, dass diese Konfiguration „distinct“ ähnelt, also entfernen Sie sie einfach.

lösen:

globalen SQL-Modus festlegen = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';<br data-filtered="gefiltert">Sitzungs-SQL-Modus festlegen = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';<br data-filtered="gefiltert">

Zusammenfassen

Das Obige ist die Lösung für den Gruppierungsfehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in der GROUP BY-Klausel und enthält nicht aggregierte Werte“ in MySQL-Versionen über 5.7. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • MySQL-Gruppierungsmethode für die Gruppierungssequenz einzelner Wörter und die Gruppierung mehrerer Felder
  • MySql Group By implementiert die Gruppierung mehrerer Felder
  • Mysql verwendet eine gruppenweise Sortierung
  • So verwenden Sie GROUP BY in MySQL, um die ersten N Datensätze zu erhalten
  • Detaillierte Erläuterung des Implementierungsprinzips der MySQL-Gruppenabfrage Group By
  • MySQL-Gruppierung, um die ersten paar Datensätze in jeder Gruppe (Ranking) mit Recherche nach „Gruppieren nach“ und „Sortieren nach“ zu erhalten
  • Implementieren Sie Group By basierend auf MySQL, um die neuesten Daten jeder Gruppe zu erhalten

<<:  Detaillierte Erläuterung des Nginx-Forward-Proxys und des Reverse-Proxys

>>:  JS implementiert das Schere-Stein-Papier-Spiel

Artikel empfehlen

Vue realisiert die Funktion eines Bucheinkaufswagens

In diesem Artikelbeispiel wird der spezifische Co...

Methode zum Erstellen eines privaten Docker-Warehouses basierend auf Harbor

Inhaltsverzeichnis 1. Einführung in Harbor 1. Har...

CSS Clear Float Clear:Both Beispielcode

Heute werde ich mit Ihnen über das Löschen von Fl...

So führen Sie einen Befehl zu einem bestimmten Zeitpunkt in Linux aus

Neulich habe ich rsync verwendet, um eine große D...

Lizenzschlüssel für VMware Workstation Pro 16 mit Nutzungs-Tutorial

VMware Workstation ist eine leistungsstarke virtu...

Zusammenfassung der Linux-Befehlsmethoden zum Anzeigen verwendeter Befehle

Im System werden viele Befehle verwendet. Wie kön...

Detaillierte Erläuterung der elastischen CSS3-Erweiterungsbox

verwenden Flexible Boxen spielen beim Front-End-L...

Die Eisernen Gesetze der MySQL-Datenbank (Zusammenfassung)

Gute Datenbankspezifikationen tragen dazu bei, di...

Detaillierte Erklärung, wie Komponenten in React kommunizieren

1. Was ist Wir können die Kommunikation zwischen ...

Anwendung von CSS3-Animationseffekten in Aktivitätsseiten

Hintergrund Ehe wir uns versehen, neigt sich ein ...

Unterschiede zwischen diesem Schlüsselwort in NodeJS und Browsern

Vorwort Jeder, der JavaScript gelernt hat, muss s...

Detailliertes Tutorial zum Aufbau eines lokalen Ideenaktivierungsservers

Vorwort Der Blogger verwendet die Idea IDE. Da di...