Die folgende Abfrage ist perfekt funktional und fragt eine einzelne Tabelle ab, um die letzten 50 Benutzernamen zu finden, die über eine fortlaufende userid
-Nummernspalte hinzugefügt wurden.Eleganter SQL?
Logik so weit ist: herauszufinden, die höchste Benutzer-ID; subtrahiere 50 davon; Nutzernamen zurück holen, wo größer.
Aber es sieht nicht elegant, und verwendet zwei Unterabfragen ist es Ziel zu erreichen:
SELECT username
FROM table
WHERE userid IN
(SELECT userid
FROM table
WHERE userid >
(SELECT MAX(userid) -50
FROM table))
Gibt es eine Möglichkeit, dies weniger verschachtelte zu machen? Effizienter? Eleganter? Jede Hilfe wird sehr geschätzt, da dies nicht der beste Weg sein kann!
Prost & vielen Dank
Ali
Ich kenne SQL, aber ich bin mir nicht sicher über die Oracle-Variante.Haben Sie sich die TOP-Erklärung angesehen? In MS SQL (es sollte das gleiche) können Sie tun; Top 50 Benutzernamen aus der Tabelle auswählen Order By UserId Desc; –