Tôi muốn tìm hiểu một số cách (lý tưởng) cơ sở dữ liệu bất khả tri trong việc chọn hàng thứ n từ bảng cơ sở dữ liệu. Cũng rất thú vị để xem làm thế nào có thể đạt được điều này bằng cách sử dụng chức năng gốc của các cơ sở dữ liệu sau:
- Máy chủ SQL
- MySQL
- PostgreSQL
- SQLite
- Oracle
Tôi hiện đang làm một cái gì đó giống như sau trong SQL Server 2005, nhưng tôi muốn thấy các cách tiếp cận bất khả tri khác:
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Tín dụng cho SQL trên: Webro của Firoz Ansari
Cập nhật: Xem câu trả lời của Troels Arvin về tiêu chuẩn SQL. Troels, bạn đã có bất kỳ liên kết chúng tôi có thể trích dẫn?
OrderNo N
, sau đó giới thiệu một cột OrderSequenceNo trong bảng và tạo nó từ một trình tạo trình tự độc lập khi tạo một đơn hàng mới.
offset x fetch first y rows only
. Hiện được hỗ trợ bởi (ít nhất) Postgres, Oracle12, DB2.