Die meiste Zeit im wirklichen Leben versuchen wir, die ersten drei Ergebnisse in einer Klasse, die ersten fünf Läufer in einem Marathon oder die zehn besten Ziele des Monats zu finden. Der SQL Server verfügt über eine Funktion zum Auswählen der TOP n-Datensätze aus einer Tabelle.
Wir können die TOP n-Datensätze aus einer Tabelle abrufen, ohne eine WHERE-Klausel zu verwenden. TOP kann auch mit DML-Anweisungen wie Update und Delete verwendet werden. Meistens wird TOP mit einer Order by-Klausel verwendet, um die Ergebnisse zuerst in aufsteigender oder absteigender Reihenfolge zu sortieren und dann die TOP n-Datensätze abzurufen. Eine order by-Klausel mit TOP stellt sicher, dass wir die Daten aus einer Tabelle sortiert haben.
TOP wird als Zeilenbegrenzer in SQL Server verwendet, genau wie LIMIT in Mysql.
Schauen wir uns ein Beispiel für TOP an, das in einer Tabelle verwendet wird.
Tabelle erstellen SSCResults (Id INT IDENTITY (1,1) PRIMARY KEY, Name VARCHAR (100), Score NUMERIC (18,2)); INSERT IN SSCResults VALUES ('Shailesh A', 98.0); INSERT IN SSCResults VALUES ('Atul K', 90.0); INSERT IN SSCResults VALUES ('Vishal P', 89.0); INSERT IN SSCResults WERTE ('Naryan N', 88.0); INSERT IN SSCResults VALUES ('Rohit G', 88.0); INSERT IN SSCResults WERTE ('Varsha K', 85.0); INSERT IN SSCResults WERTE ('Sangram K', 83.0); INSERT IN SSCResults WERTE ('Vish K', 79.0); SELECT * FROM SSCResults;
Beispiel 1 - Auswählen von TOP n Datensätzen in SQL Server: Ermitteln Sie die ersten drei Treffer in einer SSCResults-Tabelle
Um dies schnell zu finden, können Sie die Spalte Score in absteigender Reihenfolge sortieren und die drei obersten Datensätze auswählen.
SELECT TOP 3 * FROM SSCResults ORDER BY Score DESC
Bei der obigen Abfrage wurde das Ergebnisfeld zuerst von der höchsten Punktzahl bis zur niedrigsten Punktzahl sortiert. Anschließend wurden die ersten drei Punktzahlen ausgewählt. SELECT * zeigt an, dass wir alle Spalten aus der SSCResults-Tabelle abrufen möchten.
Beispiel 2 - Top with Ties: Umgang mit gebundenen Werten
Wenn wir die SSCResults-Tabelle abfragen, sehen wir, dass Id = 4 und Id = 5 die gleiche Bewertung haben. In diesem Fall würde Id = 5 nicht in der Liste angezeigt, wenn ich die vier obersten Datensätze aus der Tabelle "SSCResults" basierend auf der Spalte "Score" abrufe, da die Bedingung für die ersten 4 Datensätze nicht für die Verarbeitung eines Gleichstellungsszenarios eingerichtet ist.
Fragen wir die vier obersten Datensätze aus der SSCResults-Tabelle ab.
WÄHLEN SIE TOP 4 * FROM SSCResults aus
Wir haben nicht gesehen, dass Id = 5 in den obigen Ergebnissen die gleiche Punktzahl wie Id = 4 hat, da wir kein Gleichstellungsszenario behandelt haben. Um den Id = 5-Datensatz zu erhalten, müssen wir TOP mit TIES verwenden.
WÄHLEN SIE OBEN 4 MIT KREITEN * VON SSKonvertierungen BESTELLEN NACH Score DESC
Top-Klausel mit Aktualisierungs- und Löschanweisungen
Beispiel 3 - Aktualisieren der Top 3-Datensätze in einer Tabelle: Aktualisieren Sie die drei obersten Datensätze in einer Tabelle
Lassen Sie uns die Punktzahl der Top-3-Torschützen um 0,5 Prozent aktualisieren.
Wir können Order by nicht direkt mit einer Update-Anweisung verwenden. Wir müssen eine Unterabfrage verwenden, um die drei obersten Datensätze auszuwählen und dann zu aktualisieren.
SSCResults-Set aktualisieren Score = Score + 0.5, wo ID (wählen Sie die Top-3-ID aus SSCResults nach Punkt absteigend);
Die obige Abfrage führt zuerst die Unterabfrage aus, um die ersten drei IDs (die ersten drei Scorer) auszuwählen, und aktualisiert dann ihre Ergebnisse durch Hinzufügen von 0,5 Prozent.
Wählen Sie * aus den SSCR-Ergebnissen nach der Punktzahl ab
Wir können sehen, dass die Prozente der drei besten Ergebnisse um 0,5 Prozent aktualisiert wurden.
Beispiel 4 - Löschen der Top 3-Datensätze in einer Tabelle: Löschen Sie die drei niedrigsten Werte aus der Tabelle
DELETE FROM SSCResults wo ID (wählen Sie die Top 3 ID aus SSCResults nach Score-ASC aus);
Zuerst holt die Unterabfrage die niedrigsten Bewertungen aus den SSCR-Ergebnissen der Tabelle, und eine äußere Abfrage löscht diese Datensätze basierend auf der von der Unterabfrage erzeugten ID.