Heim  >  Artikel  >  Datenbank  >  Teilen Sie mit, wie Sie count(), gruppieren nach und sortieren nach in MySQL verwenden

Teilen Sie mit, wie Sie count(), gruppieren nach und sortieren nach in MySQL verwenden

小云云
小云云Original
2018-01-17 10:47:462372Durchsuche

In diesem Artikel erfahren Sie hauptsächlich, wie Sie count(), gruppieren nach, sortieren nach in MySQL, aufsteigende Reihenfolge, absteigende Reihenfolge in MySQL, gruppieren nach Gruppenabfrage und haben können In der Group-By-Klausel kann innerhalb einer Gruppe direkt auf die Have-Bedingungsklausel ein Funktionsausdruck folgen. Abfrageanweisungen, die die Group-by-Klausel verwenden, erfordern die Verwendung von Aggregatfunktionen.

Ich bin vor Kurzem auf ein Problem beim Chatten gestoßen und diese drei Schlüsselwörter wurden gleichzeitig verwendet. Dabei werden die Offline-Nachrichtendetails einer Person abgefragt. Zu den von unserem Server an den Client zurückgegebenen Details gehört die Auflistung der Personen oder Gruppen, die Ihnen während des Offline-Zeitraums Nachrichten gesendet haben Offline-Nachrichten wurden von einer bestimmten Person oder Gruppe gesendet, und der dritte nimmt die neueste heraus und zeigt sie an. Gruppieren Sie natürlich nach Gruppen, welche Personen oder Gruppen Ihnen Offline-Nachrichten gesendet haben, count() ermittelt die Anzahl der Offline-Nachrichten und sortiert nach Zeit die neuesten Nachrichten.

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 wird erwartungsgemäß ein Fehler gemeldet, wenn „Gruppieren nach“ und „Bestellen nach“ zusammen abgerufen werden. 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;<code>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;<br> Code>

Wir können die sortierte Ergebnismenge gruppieren und die Menge berechnen. Hier gibt es eine weitere versteckte Grube, die ich versehentlich vermieden habe. Tatsächlich führt count() dazu, dass die Reihenfolge ungültig wird. Zum 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;

Dies msg_data im am Ende der Anweisung erhaltenen Datensatz ist eigentlich das Ergebnis überhaupt keiner Sortierung, also der ursprünglichen Reihenfolge der Datenbank. Es sollte die zuerst eingefügte Nachricht sein, also die alte Nachricht. Um dieses Problem zu vermeiden, wird die verschachtelte Unterabfrage hier zuerst sortiert und dann verwendet, um count() zu verwenden, um es zu vermeiden. Ich bin unbeabsichtigt davongekommen, aber zum Glück habe ich es herausgefunden, nachdem ich den Satz wiederholt geändert und getestet hatte.

Verwandte Empfehlungen:

10 empfohlene Artikel über count()

Verwenden Sie die Methode „Gruppieren nach“ in MySql, um mehrere Felder zu gruppieren

Detaillierte Erläuterung der Sortierregeln für mehrere Felder in MySQL

Das obige ist der detaillierte Inhalt vonTeilen Sie mit, wie Sie count(), gruppieren nach und sortieren nach in MySQL verwenden. 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