Chciałbym poznać niektóre (idealnie) agnostyczne sposoby wybierania n- tego wiersza z tabeli bazy danych. Interesujące byłoby również zobaczyć, jak można to osiągnąć za pomocą natywnej funkcjonalności następujących baz danych:
- SQL Server
- MySQL
- PostgreSQL
- SQLite
- Wyrocznia
Obecnie robię coś podobnego do SQL Server 2005, ale chciałbym zobaczyć bardziej agnostyczne podejście innych:
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Podziękowania za powyższy SQL: blog internetowy Firoz Ansari
Aktualizacja: Zobacz odpowiedź Troelsa Arvina dotycząca standardu SQL. Troels, czy masz jakieś linki, które możemy zacytować?
OrderNo N
, wprowadź kolumnę OrderSequenceNo w tabeli i wygeneruj ją z niezależnego generatora sekwencji po utworzeniu nowego zamówienia.
offset x fetch first y rows only
. Obecnie obsługiwany przez (przynajmniej) Postgres, Oracle12, DB2.