SQL Academy · leksjon

LIMIT og OFFSET

Hent de første N radene og sideinndel resultatet.

Leksjon 3 av 413 trinn

LIMIT og OFFSET er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hente bare noen få rader

Noen ganger ønsker du ikke alle radene som samsvarer, men bare de første. LIMIT begrenser hvor mange rader spørringen returnerer.

Dette returnerer høyst 5 produkter.

SELECT name, price
FROM products
LIMIT 5;

LIMIT uten ORDER BY er tilfeldig

LIMIT alene gir deg noen rader, men hvilke rader er udefinert. Kombiner det alltid med ORDER BY, slik at resultatet blir meningsfullt og reproduserbart.

-- The 5 newest orders, deterministically
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 5;

Hoppe over rader med OFFSET

OFFSET forteller databasen at den skal hoppe over et antall rader før den returnerer resultatet. Kombinert med LIMIT er dette grunnlaget for paginering.

Dette hopper over de første 10 radene og returnerer de neste 5.

SELECT name, price
FROM products
ORDER BY name
LIMIT 5 OFFSET 10;

Bygge sider

For en sidestørrelse på 10 tilsvarer sidetallene disse offset-verdiene:

  • Side 1: OFFSET 0
  • Side 2: OFFSET 10
  • Side 3: OFFSET 20

Formelen er OFFSET = (page - 1) * page_size.

-- Page 3 with 10 rows per page
SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;

Operasjonsrekkefølge

Databasen bruker leddene i denne rekkefølgen: filtrer med WHERE, sorter med ORDER BY, og begrens deretter resultatet med OFFSET og LIMIT.

Dermed paginerer du alltid gjennom det sorterte og filtrerte resultatet.

SELECT name, price
FROM products
WHERE price > 0
ORDER BY price DESC
LIMIT 10 OFFSET 0;

LIMIT ALL og OFFSET 0

LIMIT ALL betyr «ingen grense» (det samme som å utelate LIMIT), og OFFSET 0 hopper ikke over noe. Dette kan av og til være nyttig når en verdi bygges dynamisk.

SELECT name
FROM products
ORDER BY name
LIMIT ALL OFFSET 0;

Standard FETCH-syntaks

PostgreSQL støtter også standardformen i SQL: OFFSET n ROWS FETCH NEXT m ROWS ONLY. Den gjør nøyaktig det samme som LIMIT/OFFSET, bare mer omstendelig.

SELECT name, price
FROM products
ORDER BY name
OFFSET 10 ROWS
FETCH NEXT 5 ROWS ONLY;

Hvorfor store OFFSET-verdier er trege

En stor OFFSET gjør fortsatt at databasen skanner og forkaster hver rad som hoppes over. OFFSET 100000 leser 100 000 rader bare for å kaste dem, noe som blir tregt på dype sider.

-- Reads 100000 rows then discards them
SELECT id, name
FROM products
ORDER BY id
LIMIT 10 OFFSET 100000;

Keyset-paginering

Et raskere alternativ er keyset-paginering (seek-paginering). I stedet for en offset tar du vare på den siste raden du så, og ber om rader etter den.

Da hopper du rett til neste side ved hjelp av en indeks, uten å hoppe over rader.

-- Next page after the last seen id (e.g. 5000)
SELECT id, name
FROM products
WHERE id > 5000
ORDER BY id
LIMIT 10;

Stabile sider krever stabil sortering

Hvis ORDER BY har like verdier, kan rader bytte plass mellom sidelastingene, slik at du får duplikater eller manglende rader. Avslutt sorteringen med en unik nøkkel, for eksempel primærnøkkelen, slik at pagineringen blir konsistent.

SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 10 OFFSET 20;

Én enkelt topprad

LIMIT 1 er en rask måte å hente én enkelt rad på, for eksempel det dyreste produktet eller den nyeste bestillingen. Kombiner det med riktig ORDER BY.

SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 1;

Kort kontroll

Du viser 10 rader per side. Hvilken klausul returnerer side 3?

Oppsummering

Du kan nå dele opp resultatene:

  • LIMIT n begrenser antallet rader
  • OFFSET m hopper over rader; OFFSET = (page-1)*size
  • Kombiner alltid med ORDER BY for å få forutsigbare sider
  • Foretrekk keyset-paginering fremfor store offset-verdier for bedre ytelse

Deretter bruker du disse verktøyene til å finne Top-N-poster.

SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;
Gratis å komme i gang

Lær deg SQL med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
46
Leksjoner
183

Ofte stilte spørsmål

Er leksjonen «LIMIT og OFFSET» gratis?

Ja – hele teksten i «LIMIT og OFFSET» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «LIMIT og OFFSET»?

Hent de første N radene og sideinndel resultatet. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med SQL Academy?

Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «LIMIT og OFFSET»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?

Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Sortering med ORDER BY
  2. Sortere etter flere kolonner
  3. LIMIT og OFFSET
  4. Finne topp-N-poster
← Tilbake til SQL Academy