So fragen Sie einen Datensatz in MySQL ab, auf welcher Seite der Paging-Seite

So fragen Sie einen Datensatz in MySQL ab, auf welcher Seite der Paging-Seite

Vorwort

In der Praxis kann es zu folgendem Problem kommen: Wir kennen die ID eines bestimmten Datensatzes und müssen dann feststellen, auf welcher Seite sich dieser Datensatz befindet, wenn er nach ID sortiert und paginiert ist. Der heutige Artikel gibt Ihnen eine Vorstellung.

Schauen wir uns die Implementierungsmethode im Detail an.

Abfrage der Paging-Position per ID

Um beispielsweise die Paging-Position basierend auf der ID abzufragen, wenn die IDs in umgekehrter Reihenfolge sortiert sind, kann das folgende SQL verwendet werden, um die Anzahl der Datensätze abzufragen, die größer als diese ID sind:

Wählen Sie Anzahl(ID) vom Benutzer aus, wobei ID > 5 ist;

Im Beispiel ist „Benutzer“ der Tabellenname und die 5-stellige ID, die abgeglichen werden soll. Da in umgekehrter Reihenfolge sortiert wird, müssen Sie offensichtlich nur die Anzahl der Datensätze finden, die größer als diese ID sind. Wenn in aufsteigender Reihenfolge sortiert wird, müssen Sie nur die Anzahl der Datensätze finden, die kleiner als diese ID sind.

Wie berechnet man, nachdem man den Zählwert ermittelt hat, auf welcher Seite sich der aktuelle Datensatz befindet? Hier ist ein Java-Codebeispiel:

int Seitengröße = 10;
// Nehmen wir an, dass das oben gefundene Ergebnis count ist und der Wert 11 ist.
int-Anzahl = 11;
// Berechnen Sie die Seitennummer des aktuellen Datensatzes
// Holen Sie sich die aktuelle Seitenzahl als Seite 2, indem Sie den Modul nehmen und 1 addieren: int pageNum = count/pageSize + 1;
// Wenn Sie eine bestimmte Position auf einer bestimmten Seite zusätzlich erhalten möchten, können Sie den Rest nehmen, also den ersten Datensatz auf der zweiten Seite (beginnend bei 0).
int index = Anzahl%Seitengröße;

Mehrdimensionale Sortierung und Positionierung

Die obige Sortierung nach einfacher ID ist relativ einfach zu lösen. Was ist, wenn die Sortierdimension eines Datensatzes nicht nur die ID ist? Sortieren Sie beispielsweise zuerst in umgekehrter Reihenfolge nach Alter. Wenn das Alter gleich ist, sortieren Sie anschließend nach ID und in umgekehrter Reihenfolge. Die grundlegenden SQL-Anweisungen lauten wie folgt:

Wählen Sie ID und Alter aus der Benutzersortierung nach Alter absteigend, ID absteigend;

An diesem Punkt wissen wir, dass es einen Datensatz mit der ID 5 und dem Alter 18 gibt. Wie bestimmen wir die Position dieses Datensatzes in der Sortierung mit mehreren Bedingungen?

Erstens liegt die Schwierigkeit der Sortierung mit mehreren Bedingungen darin, dass die Altersangaben gleich sind. Wenn die Altersangaben unterschiedlich sind, kann das folgende SQL verwendet werden, um die Position der ID zu ermitteln, genau wie bei „Abfragen der Paging-Position basierend auf der ID“:

Wählen Sie die Anzahl(ID) des Benutzers aus, dessen Alter > 18 ist.

Auf diese Weise können Sie die Position dieses Datensatzes abfragen, wenn das kombinierte Sortieralter unterschiedlich ist. Der Algorithmus für die spezifische Position ist derselbe wie im ersten Fall.

Wie also mit der Situation umgehen, wenn sich das Alter wiederholt? Dies kann natürlich durch komplexe Assoziationsabfragen oder Untertabellenabfragen erreicht werden. Hier ist eine andere Möglichkeit, nämlich die Anzahl der Datensätze mit demselben Alter und einer ID abzufragen, die größer als die des aktuellen Benutzers ist:

Wählen Sie die Anzahl(ID) des Benutzers aus, wobei Alter = 18 und ID > 5 ist.

Das Obige erhält die Datensätze mit demselben Alter und einer ID größer als 5. Addieren Sie die statistischen Ergebnisse des ersten und zweiten Schritts. Die Frage ist, ob wir zum einfachen Modus „Abfrage der Paging-Position basierend auf der ID“ zurückgekehrt sind oder ob derselbe Algorithmus berechnen kann, auf welcher Seite sich der aktuelle Datensatz befindet.

Obwohl diese Lösung die Datenbank zweimal abfragt, ist sie bei gut etabliertem Index bequemer, prägnanter und effizienter als zugehörige Abfragen oder Unterabfragen.

Zusammenfassung

Das Obige sind zwei Denkdimensionen bei der praktischen Begegnung mit ähnlichen Problemen. Ich hoffe, dass sie Ihnen einen Durchbruch bringen können, und ich hoffe auch, dass Sie bessere Lösungen anbieten können.

Nun, das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Eine kurze Diskussion über die Effizienz der MySQL-Unterabfrage-Vereinigung und in
  • Detaillierte Analyse und Optimierung der Effizienz gemeinsamer Abfragen in MySQL mit mehreren Tabellen
  • Beliebte Erklärung mehrerer gemeinsamer MySQL-Abfragen
  • Einführung in die Verwendung der gemeinsamen MySQL-Abfragen UNION und UNION ALL
  • Lösung für das Fehlerproblem bei der Verwendung von UNION und Order by in einer gemeinsamen MySQL-Abfrage
  • MySQL Multi-Table Joint Query gibt den Inhalt einer Tabelle Implementierungscode
  • Zusammenfassung des Unterschieds zwischen der Verwendung von „from“ und „join“ zum Abfragen zweier Tabellen in MySQL
  • Mysql fragt die ausgeführten Transaktionen ab und wie auf Sperren gewartet werden soll
  • Analyse der schlechten Leistung, die durch einen großen LIMIT-Offset in der MySQL-Abfrage verursacht wird
  • Zusammenfassung von vier Situationen gemeinsamer Abfragen zwischen zwei Tabellen in MySQL

<<:  Zusammenfassung der Lösung des Yum-Fehlerproblems nach dem Upgrade von Python auf 3.6.6 unter CentOS 7

>>:  So verwenden Sie die ElementUI-Paginierungskomponente Paginierung in Vue

Artikel empfehlen

Front-End-JavaScript-Funktionsprinzip

Inhaltsverzeichnis 1. Was ist eine JavaScript-Eng...

Umfassende Analyse des MySql-Master-Slave-Replikationsmechanismus

Inhaltsverzeichnis Master-Slave-Replikationsmecha...

Einführung in die Vue3 Composition API

Inhaltsverzeichnis Überblick Beispiel Warum wird ...

Über Generika der C++ TpeScript-Reihe

Inhaltsverzeichnis 1. Vorlage 2. Generika 3. Gene...

So verwenden Sie Xtrabackup zum Sichern und Wiederherstellen von MySQL

Inhaltsverzeichnis 1. Sicherung 1.1 Vollständig v...

Lösen Sie das Problem der Randzusammenführung

1. Die Ränder von Geschwisterelementen zusammenfü...

Einführung in gängige Befehle und Tastenkombinationen in Linux

Inhaltsverzeichnis 1 Systemeinführung 2 Systemver...

So erhalten Sie Root-Berechtigungen in einem Docker-Container

Zunächst muss Ihr Container laufen Sie können die...

So fügen Sie Wettervorhersagen in Ihre Website ein

Wir hoffen, dass wir durch die Einbindung der Wet...