Zusammenfassung von drei Möglichkeiten zum Implementieren von Rankings in MySQL ohne Verwendung von „order by“

Zusammenfassung von drei Möglichkeiten zum Implementieren von Rankings in MySQL ohne Verwendung von „order by“

Übernahme des Geschäfts:

Sehen Sie sich die Gehaltsinformationen des zweitrangigen Mitarbeiters an

Erstellen einer Datenbank

Datenbank löschen, falls emps vorhanden ist;
Datenbank-Emps erstellen;
benutze ems;

Tabelle „Mitarbeiter“ erstellen (
    empId int Primärschlüssel, -- Mitarbeiternummer Geschlecht char(1) NOT NULL, -- Geschlecht des Mitarbeiters hire_date date NOT NULL -- Eintrittsdatum des Mitarbeiters );
Tabelle „Gehälter“ erstellen (
    empId int Primärschlüssel, 
    Gehalt doppelt so hoch wie Arbeitnehmergehalt);
    
INSERT INTO Mitarbeiter WERTE (10001, 'M', '1986-06-26');
INSERT INTO Mitarbeiter WERTE (10002, 'F', '1985-11-21');
INSERT INTO Mitarbeiter WERTE (10003, 'M', '1986-08-28');
INSERT INTO Mitarbeiter WERTE (10004, 'M', '1986-12-01');
INSERT INTO Gehälter VALUES(10001,88958);
INSERT INTO Gehälter VALUES(10002,72527);
INSERT INTO Gehälter VALUES(10003,43311);
INSERT INTO Gehälter VALUES(10004,74057);

Lösung

1. (Basislösung)

Suchen Sie zunächst das höchste Gehalt in der Gehaltstabelle und verwenden Sie dieses dann als Bedingung, um das zweithöchste Gehalt zu finden

Die Abfrageanweisung lautet wie folgt:

wählen
	E.empId,E.gender,E.hire_date,S.salary
aus
	Mitarbeiter E Einstiegsgehälter S 
An 
	E.empId = S.empId
Wo	
	S.Gehalt=
	(
    select max(Gehalt)aus Gehältern 
    Wo 
        Gehalt
        (Wählen Sie max(Gehalt) aus den Gehältern aus)
    );
-- ---------------Abfrageergebnisse------------ --
+-------+--------+------------+--------+
| Mitarbeiter-ID | Geschlecht | Einstellungsdatum | Gehalt |
+-------+--------+------------+--------+
| 10004 | M | 01.12.1986 | 74057 |
+-------+--------+------------+--------+

2. (Self-Join-Abfrage)

Führen Sie zunächst eine Self-Join-Abfrage für Gehälter durch. Wenn s1<=s2 verknüpft und nach s1.salary gruppiert ist, kann der Wert von count, also die Anzahl der Personen mit einem höheren Gehalt als er, gefiltert werden, indem Personen mit count=2 ausgewählt werden müssen, um das zweithöchste Gehalt zu erhalten.

Die Abfrageanweisung lautet wie folgt:

wählen
	E.empId,E.gender,E.hire_date,S.salary
aus
	Mitarbeiter E Einstiegsgehälter S 
An 
	E.empId = S.empId
wobei S.Gehalt=
	(
    wählen 
        s1.Gehalt
    aus 
        Gehälter S1 Einstieg Gehälter S2 
    An 
        s1.Gehalt <= s2.Gehalt
    Gruppieren nach 
        s1.Gehalt              
  	haben
  	 Anzahl(unterschiedliche s2.Gehalt) = 2
    );
-- ---------------Abfrageergebnisse------------ --
+-------+--------+------------+--------+
| Mitarbeiter-ID | Geschlecht | Einstellungsdatum | Gehalt |
+-------+--------+------------+--------+
| 10004 | M | 01.12.1986 | 74057 |
+-------+--------+------------+--------+

3. (Version zur Self-Join-Abfrageoptimierung)

Das Prinzip ist das gleiche wie bei 2, aber der Code ist viel einfacher. Die beiden oben genannten Methoden dienen zur Einführung der letzten Methode. In vielen Fällen haben „group by“ und „order by“ ihre Einschränkungen. Für uns Anfänger ist es dennoch sinnvoll, diese praktischere Idee zu beherrschen.

wählen
	E.empId,E.gender,E.hire_date,S.salary
aus
	Mitarbeiter E Einstiegsgehälter S 
An
    S.empId =E.empId
Wo
    (Wählen Sie Anzahl(1) aus Gehältern aus, wobei Gehalt>=S.Gehalt)=2;
-- ---------------Abfrageergebnisse------------ --
+-------+--------+------------+--------+
| Mitarbeiter-ID | Geschlecht | Einstellungsdatum | Gehalt |
+-------+--------+------------+--------+
| 10004 | M | 01.12.1986 | 74057 |
+-------+--------+------------+--------+

Dies ist nur eine kurze Zusammenfassung. Wenn Fehler vorhanden sind, weisen Sie uns bitte darauf hin.

Zusammenfassen

Damit ist dieser Artikel über drei Möglichkeiten zur Implementierung von Rankings in MySQL ohne Verwendung von „order by“ abgeschlossen. Weitere relevante Inhalte zu MySQL-Rankings ohne „order by“ finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Lösung zur Datenduplizierung bei Verwendung von Limit+Order By in der MySql-Paging
  • Lösung für das Problem, dass „order by“ in MySQL-Unterabfragen nicht wirksam ist
  • Detaillierte Erläuterung der Fallstricke beim Mischen von MySQL-Order-By und Limit
  • So verwenden Sie MySQL „group by“ und „order by“ gemeinsam
  • So verwenden Sie Indizes zur Optimierung von MySQL ORDER BY-Anweisungen
  • Mysql-Sortierung und Paginierung (Order by & Limit) und vorhandene Fallstricke
  • Abfrageprozess und Optimierungsmethode der (JOIN/ORDER BY)-Anweisung in MySQL
  • MySQL versteht kurz, wie "order by" funktioniert
  • Detaillierte Erläuterung der MySQL-Methode zur Optimierung der Reihenfolge nach Anweisung
  • Details zur Verwendung von „order by“ in MySQL

<<:  Detaillierte Erklärung des Unterschieds zwischen Tags und Elementen in HTML

>>:  Mehrere Grundsätze für die Produktdesign-Referenz auf Websites

Artikel    

Artikel empfehlen

Lösung zur Deinstallation von Python und Yum im CentOs-System

Hintergrund des Unfalls: Vor einigen Tagen habe i...

Detailliertes Tutorial zur Installation von mysql-8.0.20 unter Linux

** Installieren Sie mysql-8.0.20 unter Linux ** U...

setup+ref+reactive implementiert Vue3-Reaktionsfähigkeit

Das Setup wird zum Schreiben kombinierter APIs ve...

Detaillierte Erklärung der Kartenüberlagerung in OpenLayers6

1. Overlay-Übersicht Overlay bedeutet Überlagerun...

base target="" steuert den Ziel-Open-Frame des Links

<base target=_blank> ändert den Zielrahmen d...

Mehrere Möglichkeiten zum Speichern von Bildern in einer MySQL-Datenbank

Normalerweise müssen die von Benutzern hochgelade...

So verwenden Sie Port 80 in Tomcat unter Linux

Anwendungsszenario In vielen Fällen installieren ...

Fehler bei der Eingabe chinesischer Zeichen im Flex-Programm Firefox

In niedrigeren Versionen von Firefox können keine ...

Vue implementiert Fuzzy-Abfrage-MySQL-Datenbankdaten

Inhaltsverzeichnis 1. Nachfrage 2. Umsetzung 3. E...

Erstellen Sie ein privates Docker-Warehouse (selbstsignierte Methode)

Um die von uns erstellten Images zentral zu verwa...