Я заинтересован в изучении некоторых (в идеале) независимых от базы данных способов выбора n- й строки из таблицы базы данных. Также было бы интересно увидеть, как этого можно достичь, используя встроенную функциональность следующих баз данных:
- SQL Server
- MySQL
- PostgreSQL
- SQLite
- оракул
В настоящее время я делаю что-то вроде следующего в SQL Server 2005, но мне было бы интересно увидеть другие более независимые подходы:
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Кредит на приведенный выше SQL: блог Фироза Ансари
Обновление: см . Ответ Troels Arvin относительно стандарта SQL. Troels, есть ли у вас ссылки, которые мы можем цитировать?
OrderNo N
, введите столбец OrderSequenceNo в таблицу и сгенерируйте его из независимого генератора последовательностей при создании нового заказа.
offset x fetch first y rows only
. В настоящее время поддерживается (как минимум) Postgres, Oracle12, DB2.