Ich bin daran interessiert, einige (idealerweise) datenbankunabhängige Methoden zur Auswahl der n- ten Zeile aus einer Datenbanktabelle zu lernen . Es wäre auch interessant zu sehen, wie dies mit der nativen Funktionalität der folgenden Datenbanken erreicht werden kann:
- SQL Server
- MySQL
- PostgreSQL
- SQLite
- Orakel
Ich mache derzeit in SQL Server 2005 so etwas wie das Folgende, aber ich wäre daran interessiert, die agnostischeren Ansätze anderer zu sehen:
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Gutschrift für das oben genannte SQL: Firoz Ansaris Weblog
Update: Siehe Troels Arvins Antwort zum SQL-Standard. Troels, hast du irgendwelche Links, die wir zitieren können?
OrderNo N
, fügen Sie eine OrderSequenceNo- Spalte in die Tabelle ein und generieren Sie sie beim Erstellen einer neuen Bestellung aus einem unabhängigen Sequenzgenerator .
offset x fetch first y rows only
. Wird derzeit von (mindestens) Postgres, Oracle12, DB2 unterstützt.