Sortere etter flere kolonner
Løs likheter med sekundære sorteringsnøkler.
Sortere etter flere kolonner er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 2 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.
Problemet med like verdier
Når du sorterer etter én kolonne, har rader med samme verdi ingen definert innbyrdes rekkefølge. Tre produkter som alle koster 20, kan komme tilbake i hvilken som helst rekkefølge.
Legg til en ekstra sorteringsnøkkel for å gjøre rekkefølgen helt forutsigbar.
-- Ties on price are ordered arbitrarily
SELECT name, price
FROM products
ORDER BY price;Angi flere sorteringsnøkler
ORDER BY godtar en kommaseparert liste med kolonner. Databasen sorterer etter den første kolonnen, bryter deretter like verdier med den andre og fortsetter slik.
Her sorteres produktene etter pris; like priser sorteres alfabetisk etter navn.
SELECT name, price
FROM products
ORDER BY price, name;Rekkefølgen på nøklene er viktig
Rekkefølgen på kolonnene endrer resultatet. ORDER BY price, name er ikke det samme som ORDER BY name, price.
Den første nøkkelen er hovedsorteringen; senere nøkler har bare betydning når de tidligere nøklene er like.
-- Primary sort by category, then by name within each category
SELECT category, name
FROM products
ORDER BY category, name;Retning per kolonne
Hver sorteringsnøkkel kan ha sin egen retning. Bland ASC og DESC fritt.
Dette grupperer etter kategori i alfabetisk rekkefølge, men viser de dyreste varene først i hver kategori.
SELECT category, name, price
FROM products
ORDER BY category ASC, price DESC;DESC gjelder per kolonne
En vanlig feil er å tro at DESC på slutten snur alt. Det påvirker bare kolonnen det står rett etter.
I ORDER BY category, price DESC er category fortsatt stigende; bare price er synkende.
-- category: ASC, price: DESC
SELECT category, price
FROM products
ORDER BY category, price DESC;Tre eller flere nøkler
Du kan kjede sammen så mange sorteringsnøkler du trenger. Hver nøkkel brukes først når alle nøklene foran den har like verdier.
Sorter ordrer etter dato, deretter kunde og til slutt totalbeløp innenfor samme kunde og dato.
SELECT created_at, customer_id, total
FROM orders
ORDER BY created_at DESC, customer_id, total DESC;En stabil, deterministisk sortering
For å få et fullstendig deterministisk resultat bør du avslutte sorteringsnøklene med en unik kolonne, for eksempel primærnøkkelen. Da kan ingen to rader ha samme sorteringsverdi.
Dette er viktig for paginering, som du skal se i neste leksjon.
SELECT id, name, price
FROM products
ORDER BY price DESC, id;Blanding av uttrykk og kolonner
Sorteringsnøkler kan være en blanding av vanlige kolonner og uttrykk. Hver nøkkel er uavhengig.
Dette sorterer etter lagerverdi i synkende rekkefølge og deretter alfabetisk etter navn som en nøkkel for å bryte like verdier.
SELECT name, price, stock
FROM products
ORDER BY price * stock DESC, name ASC;Sortering etter en boolsk verdi for å flytte en gruppe
Et nyttig triks er å sortere etter et boolsk uttrykk for å flytte en gruppe til toppen eller bunnen. I PostgreSQL sorteres false før true.
Dette viser varer som er på lager (stock > 0) først, og deretter de billigste innenfor hver gruppe.
SELECT name, stock, price
FROM products
ORDER BY (stock = 0), price;Kontrollere plasseringen av NULL
Som standard sorteres NULL i PostgreSQL sist ved stigende sortering og først ved synkende sortering. Overstyr dette med NULLS FIRST eller NULLS LAST på en valgfri nøkkel.
SELECT name, discount
FROM products
ORDER BY discount DESC NULLS LAST;Sette alt sammen
En realistisk sortering med flere nøkler kan kombinere retning, uttrykk og håndtering av NULL. Les den fra venstre mot høyre: hver nøkkel finjusterer den foregående.
SELECT category, name, price, rating
FROM products
ORDER BY category ASC,
rating DESC NULLS LAST,
price ASC;Kort kontroll
Se på ORDER BY category, price DESC.
Oppsummering
Sortering etter flere kolonner, kort fortalt:
- List opp sorteringsnøkler, separert med komma; tidligere nøkler har forrang
- Hver nøkkel har sin egen
ASC/DESC - Avslutt med en unik kolonne for en deterministisk rekkefølge
- Kontroller manglende verdier med
NULLS FIRST/NULLS LAST
Deretter skal du begrense hvor mange rader som returneres med LIMIT og OFFSET.
SELECT category, name, price
FROM products
ORDER BY category ASC, price DESC, id;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 «Sortere etter flere kolonner» gratis?
Ja – hele teksten i «Sortere etter flere kolonner» 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 «Sortere etter flere kolonner»?
Løs likheter med sekundære sorteringsnøkler. 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 2 av 4.
Hvor lang tid tar leksjonen «Sortere etter flere kolonner»?
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
- Sortering med ORDER BY
- Sortere etter flere kolonner
- LIMIT og OFFSET
- Finne topp-N-poster