SQL veritabanı tablosunda n'inci satır nasıl seçilir?
Bir veritabanı tablosundan n'inci satırı seçmenin bazı (ideal olarak) veritabanından bağımsız yollarını öğrenmekle ilgileniyorum. Bunun aşağıdaki veritabanlarının yerel işlevselliği kullanılarak nasıl başarılabileceğini görmek de ilginç olacaktır:
- SQL Server
- MySQL
- PostgreSQL
- SQLite
- Oracle
Şu anda SQL Server 2005'te aşağıdaki gibi bir şey yapıyorum, ancak diğerlerinin daha agnostik yaklaşımlarını görmek isterim:
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Yukarıdaki SQL için kredi: Firoz Ansari'nin Web Günlüğü
Güncelleme: SQL standardı ile ilgili olarak Troels Arvin'in yanıtına bakın. *Troels, alıntı yapabileceğimiz herhangi bir bağlantın var mı?
370
3
ADD:
Bu, sonuçları n. sonuçtan başlayarak bir sonuçla sınırlayacaktır.
LIMIT n,1 MS SQL Server'da çalışmaz. Sanırım bu sözdizimini desteklemeyen tek büyük veritabanı bu. Adil olmak gerekirse, bu SQL standardının bir parçası değildir, ancak olması gerektiği kadar yaygın bir şekilde desteklenmektedir. SQL sunucusu dışındaki her şeyde LIMIT harika çalışır. SQL server için zarif bir çözüm bulamadım.
İşte yakın zamanda Oracle için yazdığım ve dinamik sayfalama/sıralamaya izin veren bir sproc'un genel bir sürümü - HTH