Detaillierte Erklärung von count(), group by, order by in MySQL

Detaillierte Erklärung von count(), group by, order by in MySQL

Ich bin vor Kurzem auf ein Problem gestoßen, als ich im Instant Messaging diese drei Schlüsselwörter gleichzeitig verwendet habe. Es dient zum Abfragen der Offline-Nachrichtendetails einer Person. Die von unserem Server an den Client zurückgegebenen Details umfassen drei Inhalte. Der erste erfordert eine Auflistung, welche Personen oder Gruppen Ihnen während der Offline-Zeit Nachrichten gesendet haben. Der zweite Inhalt gibt an, wie viele Offline-Nachrichten eine bestimmte Person oder Gruppe gesendet hat. Der dritte Inhalt zeigt die neueste Nachricht an. Gruppieren Sie nach Gruppen, die Ihnen Offlinenachrichten gesendet haben, count() ermittelt die Anzahl der Offlinenachrichten und sortiert nach Zeit, um die neuesten Nachrichten zu erhalten.

select count(1) as cnt, msg_data from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc group by from_company_id, from_user_id;

Dann tritt erwartungsgemäß ein Fehler auf, wenn mit „group by“ und „order by“ zusammen gesucht wird. Wir können verschachtelte Unterabfragen verwenden.

select count(1) as cnt, msg_data from (select * from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc) as temp_table group by from_company_id, from_user_id;

Wir können die Anzahl der bereits sortierten Ergebnisse gruppieren und berechnen. Hier gibt es eine versteckte Falle, die ich versehentlich vermieden habe. Tatsächlich führt count() dazu, dass die Sortierreihenfolge ungültig wird. Beispiel:

select count(1) as cnt, msg_data from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc;

Die Anweisung erhält schließlich einen Datensatz, in dem msg_data tatsächlich überhaupt nicht sortiert ist, also die ursprüngliche Reihenfolge der Datenbank. Es sollte die Nachricht sein, die zuerst eingefügt wurde, also die alte Nachricht. Um dieses Problem zu vermeiden, wird zuerst die verschachtelte Unterabfrage sortiert und dann count() verwendet. Ich bin ihm unabsichtlich ausgewichen, habe es aber entdeckt, nachdem ich den Satz geändert und immer wieder getestet habe.

Das könnte Sie auch interessieren:
  • Nutzungs- und Leistungsoptimierungstechniken für die Aggregatfunktion „count“ in MySQL
  • MySQL count: ausführliche Erklärung und Funktionsbeispielcode
  • Detaillierte Erklärung zur Verwendung der COUNT-Funktion in MySQL
  • Eine kurze Diskussion über die MySQL-Zeilenanzahl
  • Zusammenfassung der Methoden zur Verbesserung der MySQL-Anzahl
  • Detaillierte Erklärung der Zählung ohne Filterbedingungen in MySQL
  • Zusammenfassung der Unterschiede zwischen count(*), count(1) und count(col) in MySQL
  • Vergleich der Verwendung von distinct und count(*) in MySQL
  • Eine praktische Möglichkeit, die Gesamtzahl der Zeilen in MySQL-Abfrageergebnissen zu zählen, ohne (*) zu zählen
  • Erklärung und Verwendung von found_row() und row_count() in MySQL
  • Detaillierte Erklärung zur korrekten Verwendung der Zählfunktion in MySQL

<<:  Beispiel für ein WeChat-Applet zum Erzielen des rotierenden Laterneneffekts

>>:  Ein vollständiges Beispiel für die mehrstufige Sprungfunktion (Seiten-Drilldown) von Vue für verwandte Seiten

Artikel empfehlen

W3C Tutorial (13): W3C WSDL Aktivitäten

Bei Webdiensten geht es um die Kommunikation zwis...

Beispiel für die Implementierung des TikTok-Textschütteleffekts mit CSS

In der täglichen Entwicklung streiten sich Front-...

Implementierung des Pycharm-Installationstutorials auf Ubuntu 18.04

Methode 1: Pycharm herunterladen und installieren...

Methodenbeispiel zum sicheren Abrufen tiefer Objekte von Object in Js

Inhaltsverzeichnis Vorwort Text Parameter Beispie...

So zeigen Sie verfügbare Netzwerkschnittstellen in Linux an

Vorwort Die häufigste Aufgabe nach der Installati...

Linux verwendet stty zum Anzeigen und Ändern von Terminalzeileneinstellungen

Sttty ist ein gängiger Befehl zum Ändern und Druc...

Frage zur Webseitenerstellung: Bilddateipfad

Dieser Artikel stammt ursprünglich von 123WORDPRE...

So zeigen Sie den Nginx-Konfigurationsdateipfad und den Ressourcendateipfad an

Zeigen Sie den Pfad der Nginx-Konfigurationsdatei...

Einführung in die Verwendung von CSS3-Filterattributen

1. Einleitung Beim Schreiben von Animationseffekt...