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 empfehlen

Informationen zu WSL-Konfigurations- und Änderungsproblemen in Docker

https://docs.microsoft.com/en-us/windows/wsl/wsl-...

Einige Fähigkeiten, die Sie beim Erstellen von Webseiten kennen müssen

1. Z-Index ist in IE6 ungültig. In CSS wird die E...

Allgemeine Struktur-Tags in XHTML

Struktur Text, Kopf, HTML, Titel Text abbr, Akron...

Eingabedatei zur benutzerdefinierten Schaltflächenverschönerung (Demo)

Ich habe schon einmal einen solchen Artikel gesch...

HTML-Tbody-Verwendung

Strukturierte Tabelle (nur IExplore) 1) Gruppieren...

Einführung in die Fuzzy-Abfragemethode mit instr in MySQL

Die Verwendung der internen Funktion instr in MyS...

Docker-Lernen: Die spezifische Verwendung von Container-Containern

Container sind ein weiteres Kernkonzept von Docke...

So verwenden Sie MySQL „group by“ und „order by“ gemeinsam

Angenommen, es gibt eine Tabelle: Belohnung (Belo...

Grafisches Tutorial zur Installation von MySQL 8.0.15 und Datenbankgrundlagen

Die Installation der MySQL-Software und die Daten...

So stellen Sie einen Code-Server mit Docker bereit

Ziehen Sie das Bild # Docker-Pull Codercom/Code-S...

So legen Sie den Standardwert eines MySQL-Felds fest

Inhaltsverzeichnis Vorwort: 1. Standardwertbezoge...