Avatar billede angelenglen Nybegynder
29. oktober 2013 - 15:59 Der er 6 kommentarer og
1 løsning

MS SQL query med offset

Jeg har brug for at kunne trække 10 rækker ud af en tabel, med et vist offset.

Det er til brug til paging, dvs. der fx er 10 rækker, og jeg vil vise 10 sider.

Til første side kan jeg sagtens gøre som fx:

SELECT TOP 10 FROM Nyheder ORDER BY id

Men side 2 fx, der er jeg jo interesseret i række 11-20.
Jeg kan selvfølgelig bruge:
SELECT TOP 20 FROM Nyheder ORDER BY id
- og så springe de første 10 over i min kode, men det virker lidt dumt.
Ikke mindst hvis der engang er 10.000 rækker, og jeg skal bruge de sidste 10...

Jeg tænker der må være en let måde at gøre det, som jeg bare ikke lige kan gennemskue?
Avatar billede arne_v Ekspert
29. oktober 2013 - 16:09 #2
Avatar billede Syska Mester
29. oktober 2013 - 16:12 #4
#arne
"Using OFFSET and FETCH FIRST:(since SQL:2008)"

Er det ikke først kommet med i 2012?
Avatar billede janus_007 Nybegynder
30. oktober 2013 - 00:23 #5
Kig i venstre kolonne :)
Avatar billede angelenglen Nybegynder
30. oktober 2013 - 10:15 #6
Jeg bruger en Microsoft SQL Server 2008 R2, og der virker følgende:
SELECT * FROM Nyheder ORDER BY id OFFSET 30 ROWS FETCH NEXT 10 ROWS ONLY


(hvis jeg altså vil have side 3, med 10 pr. side)

Mange tak for hurtige og gode svar.

Buzzzz kom først med det svar jeg brugte, men arne_v's svar er også ret godt, ikke mindst for andre der bruger andre databaser end MS SQL.

Så hvis i begge lægger et svar, fordeler jeg points mellem jer :-)

Igen - MANGE TAK!
Avatar billede Syska Mester
30. oktober 2013 - 10:35 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester