Kako izbrati n-to vrstico v tabeli podatkovne zbirke SQL?
Zanima me, kako se naučiti nekaj (idealno) podatkovni bazi prijaznih načinov izbire nte vrstice iz tabele v podatkovni bazi. Prav tako bi bilo zanimivo videti, kako je to mogoče doseči z uporabo izvirnih funkcij naslednjih podatkovnih zbirk:
- SQL Server
- MySQL
- PostgreSQL
- SQLite
- Oracle
Trenutno delam nekaj podobnega v SQL Serverju 2005, vendar bi me zanimalo, če bi videli bolj agnostične pristope drugih:
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Zasluge za zgornji SQL: Firoz Ansari's Weblog
Update: Glej Troels Arvin's answer glede standarda SQL. Troels, imaš kakšne povezave, ki jih lahko navedemo?
370
3
ADD:
To bo omejilo rezultate na en rezultat, začenši z rezultatom n.
LIMIT n,1 ne deluje v strežniku MS SQL Server. Mislim, da je to edina večja podatkovna zbirka, ki ne podpira te sintakse. Če smo pošteni, ta sintaksa ni del standarda SQL, čeprav je tako široko podprta, da bi morala biti. V vsem, razen v strežniku SQL, LIMIT deluje odlično. Za strežnik SQL nisem našel elegantne rešitve.
Tukaj je splošna različica sproc-a, ki sem ga pred kratkim napisal za Oracle in omogoča dinamično listanje/razvrščanje - HTH