Sono interessato a imparare alcune (idealmente) di database agnostico modi per selezionare il n ° fila da una tabella del database. Sarebbe anche interessante vedere come questo può essere ottenuto utilizzando la funzionalità nativa dei seguenti database:
- server SQL
- MySQL
- PostgreSQL
- SQLite
- Oracolo
Attualmente sto facendo qualcosa di simile al seguente in SQL Server 2005, ma sarei interessato a vedere altri approcci più agnostici:
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Ringraziamo l'SQL sopra: il blog di Firoz Ansari
Aggiornamento: vedi la risposta di Troels Arvin in merito allo standard SQL. Troels, hai qualche link che possiamo citare?
OrderNo N
, quindi introdurre una colonna OrderSequenceNo nella tabella e generarla da un generatore di sequenza indipendente al momento della creazione di un nuovo ordine.
offset x fetch first y rows only
. Attualmente supportato da (almeno) Postgres, Oracle12, DB2.