


Teilen Sie die Lösung für das Gruppen-nach-Abfrage-Problem in Mysql5.7
Dieser Artikel stellt Ihnen hauptsächlich die Lösung des nach dem Upgrade von MySQL auf 5.7 aufgetretenen Gruppen-nach-Abfrage-Problems vor des Lernens, Freunde, die es brauchen, folgen Sie bitte dem Herausgeber, um gemeinsam zu lernen.
Problem gefunden
Kürzlich, nach dem Upgrade von MySQL auf MySQL 5.7, habe ich einige Gruppierungsabfragen durchgeführt, wie zum Beispiel die folgende
SELECT *, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY `inputtime` DESC LIMIT 20
meldet den folgenden Fehler:
SELECT list is not in GROUP BY clause and contains nonaggregated column ‘news.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by.
Ursachenanalyse
Der Grund liegt im MySQL 5.7-Modus. ONLY_FULL_GROUP_BY ist standardmäßig aktiviert.
ONLY_FULL_GROUP_BY ist ein von MySQL bereitgestellter SQL-Modus. Dieser SQL-Modus wird verwendet, um die Gültigkeit der SQL-Anweisung GROUP BY zu überprüfen.
http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by
this is incompatible with sql_mode=only_full_group_by
Dieser Satz erinnert mich daran, dass dies gegen die MySQL-Richtlinie verstößt Die Regel ist nur vollständig gruppiert, d. h. sie wird bei der Ausführung zuerst gruppiert und die abgefragten Felder (ausgewählte Felder) werden aus dem Gruppeninhalt herausgenommen, sodass alle abgefragten Felder innerhalb der Gruppe nach Gruppierungsbedingungen einer Situation liegen sollten Ausnahme: Wenn das Abfragefeld eine Aggregatfunktion enthält, muss diese nicht in die Gruppe von aufgenommen werden, genau wie meine count(id) oben.
Später entdeckte ich, dass die Felder der Sortierbedingungen „Order by“ auch innerhalb von „group by“ liegen müssen und die Sortierfelder auch aus den gruppierten Feldern übernommen werden. Wenn Sie es nicht verstehen, können Sie einen Blick darauf werfen.
Lösung:
1.set@@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_pISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
NUR_FULL_GROUP_BY entfernen, um SQL normal auszuführen.
2. Wenn ONLY_FULL_GROUP_BY nicht festgelegt ist, müssen alle ausgewählten Felder innerhalb der Gruppe nach Gruppierungsbedingung liegen (mit Ausnahme von Feldern, die Funktionen enthalten). (Dieses Problem tritt auch auf, wenn Sie auf „Ordnung nach“ stoßen. Ebenso muss das Feld „Ordnung nach“ auch innerhalb der Gruppe „Gruppierung nach“ liegen.)
3. Verwenden Sie ANY_VALUE()
diese Funktion https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value
Diese Funktion ist Nützlich für GROUP BY-Abfragen, wenn der SQL-Modus ONLY_FULL_GROUP_BY aktiviert ist, für Fälle, in denen MySQL eine Abfrage ablehnt, von der Sie wissen, dass sie gültig ist, aus Gründen, die MySQL nicht ermitteln kann. Der Rückgabewert und -typ der Funktion ist mit dem Rückgabewert und -typ seines Arguments identisch , aber das Funktionsergebnis wird nicht für den SQL-Modus ONLY_FULL_GROUP_BY überprüft.
Zum Beispiel kann die obige SQL-Anweisung als 3 Methoden geschrieben werden.
SELECT ANY_VALUE(id)as id,ANY_VALUE(uid) as uid ,ANY_VALUE(username) as username,ANY_VALUE(title) as title,ANY_VALUE(author) as author,ANY_VALUE(thumb) as thumb,ANY_VALUE(description) as description,ANY_VALUE(content) as content,ANY_VALUE(linkurl) as linkurl,ANY_VALUE(url) as url,ANY_VALUE(group_id) as group_id,ANY_VALUE(inputtime) as inputtime, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY ANY_VALUE(inputtime) DESC LIMIT 20
Das obige ist der detaillierte Inhalt vonTeilen Sie die Lösung für das Gruppen-nach-Abfrage-Problem in Mysql5.7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

Die Volltext-Suchfunktionen von InnoDB sind sehr leistungsfähig, was die Effizienz der Datenbankabfrage und die Fähigkeit, große Mengen von Textdaten zu verarbeiten, erheblich verbessern kann. 1) InnoDB implementiert die Volltext-Suche durch invertierte Indexierung und unterstützt grundlegende und erweiterte Suchabfragen. 2) Verwenden Sie die Übereinstimmung und gegen Schlüsselwörter, um den Booleschen Modus und die Phrasesuche zu unterstützen. 3) Die Optimierungsmethoden umfassen die Verwendung der Word -Segmentierungstechnologie, die regelmäßige Wiederaufbauung von Indizes und die Anpassung der Cache -Größe, um die Leistung und Genauigkeit zu verbessern.

In Artikel werden die Konfiguration der SSL/TLS -Verschlüsselung für MySQL, einschließlich der Erzeugung und Überprüfung von Zertifikaten, erläutert. Das Hauptproblem ist die Verwendung der Sicherheitsauswirkungen von selbstsignierten Zertifikaten. [Charakterzahl: 159]

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]

In Artikel werden Strategien zum Umgang mit großen Datensätzen in MySQL erörtert, einschließlich Partitionierung, Sharding, Indexierung und Abfrageoptimierung.

In dem Artikel werden in MySQL die Ablagerung von Tabellen mithilfe der Drop -Tabellenerklärung erörtert, wobei Vorsichtsmaßnahmen und Risiken betont werden. Es wird hervorgehoben, dass die Aktion ohne Backups, die Detaillierung von Wiederherstellungsmethoden und potenzielle Produktionsumfeldgefahren irreversibel ist.

In dem Artikel werden in verschiedenen Datenbanken wie PostgreSQL, MySQL und MongoDB Indizes für JSON -Spalten in verschiedenen Datenbanken erstellt, um die Abfrageleistung zu verbessern. Es erläutert die Syntax und die Vorteile der Indizierung spezifischer JSON -Pfade und listet unterstützte Datenbanksysteme auf.

MySQL unterstützt vier Indextypen: B-Tree, Hash, Volltext und räumlich. 1.B-Tree-Index ist für die gleichwertige Suche, eine Bereichsabfrage und die Sortierung geeignet. 2. Hash -Index ist für gleichwertige Suche geeignet, unterstützt jedoch keine Abfrage und Sortierung von Bereichs. 3. Die Volltextindex wird für die Volltext-Suche verwendet und ist für die Verarbeitung großer Mengen an Textdaten geeignet. 4. Der räumliche Index wird für die Abfrage für Geospatial -Daten verwendet und ist für GIS -Anwendungen geeignet.
