Med SQL-kommandoen ORDER BY kan du sortere søkeresultatene etter dine egne behov, enten i stigende eller synkende rekkefølge. Ved å sortere dataene i måltabellen din etter rader og kolonner kan du gjøre resultatene tydeligere og lettere å lese. Dette bidrar igjen til å optimalisere og fremskynde dataanalyser og spørringer i komplekse datasett.

Hva er SQL ORDER BY?

Du kan bruke SQL ORDER BY til å sortere data og resultater fra enkle eller komplekse datasett. Kommandoen lar deg definere hvordan dataene skal ordnes i måltabellen. I tillegg kan du angi om dataene skal sorteres i stigende eller synkende rekkefølge. Dermed bidrar ORDER BY til å levere søkeresultater som er oversiktlige og lette å lese.

Som standard viser ORDER BY resultatene i stigende rekkefølge, det vil si fra A til Å eller fra laveste til høyeste verdi. Hvis du foretrekker resultater i synkende rekkefølge, kan du bruke det valgfrie nøkkelordet DESC. Du kan angi én eller flere målkolonner for resultatene.

SQL ORDER BY er viktig for å utføre strukturerte og raske spørringer. Det brukes ofte sammen med SELECT, WHERE og andre SQL-operatører og -funksjoner som GROUP BY.

Tip

Vil du få en bedre forståelse av SQL, men vet ikke hvor du skal begynne? Vår innføring i SQL med eksempler gjør det enkelt å komme i gang med å lære dette populære databasespråket.

Hva er syntaksen i SQL ORDER BY?

Syntaksen i SQL ORDER BY ser slik ut:

SELECT  ColumnA, ColumnB, …  or *
FROM  Table
ORDER BY  ColumnA, ColumnB, …  (optional: ASC or DESC)
sql
Note

Hvis du bare angir én kolonne etter ORDER BY, får du én kolonne med sorterte resultater. Hvis du angir flere enn én kolonne, blir resultatene sortert etter KolonneA. Hvis KolonneA har identiske oppføringer i enkelte rader, blir disse radene sortert etter KolonneB.

Du kan utvide denne syntaksen med flere operatorer og parametere. En WHERE kan for eksempel brukes til å definere kriterier som avgrenser søkeresultatene dine. Syntaksen for ORDER BY kombinert med WHERE ser slik ut:

SELECT  ColumnA, ColumnB, …  or *
FROM  Table
WHERE  ColumnA  =  'SearchCondition'
ORDER BY  ColumnA, ColumnB, …  (optional: ASC or DESC)
sql

Du kan også bruke følgende parametere:

  • SELECT: Du kan bruke SELECT til å angi hvilke data du vil analysere. Bruk en stjerne * for å hente hele datasettet, eller skriv inn kolonnenavnene for å arbeide med de aktuelle kolonnene.
  • FROM: Angir hvilken tabell du vil hente data fra.
  • WHERE: WHERE er en valgfri klausul for å definere søkekriterier som vil begrense resultatene dine. Innenfor en WHERE kan du bruke operatorer som =, LIKE eller NOT.
  • ORDER BY: Definerer hvilken kolonne du vil sortere resultatene dine etter. Hvis du ikke legger til ASC eller DESC, vil resultatene som standard bli sortert i stigende rekkefølge.
Note

Avhengig av hvilken database ORDER BY, sorteres NULL-verdier ORDER BY automatisk eller i henhold til den valgte sorteringsrekkefølgen. I SQLite, MySQL og SQL Server behandles NULL-verdier som de laveste verdiene. Det betyr at de vises først i stigende rekkefølge. I Oracle og PostgreSQL behandles NULL-verdier som de høyeste verdiene. De vises derfor sist i stigende rekkefølge.

Hva kan SQL ORDER BY brukes til?

Her er noen praktiske bruksområder for SQL ORDER BY:

  • Sortering av produktinformasjon etter produktnavn, kategori eller pris
  • Sortering av transaksjoner etter beløp, dato eller navn
  • Sortering av ordrer etter beløp eller rangering
  • Sortering av ansatte etter lønn, kontrakter, ytelse eller avdeling
  • Liste over lagerbeholdning basert på mengde eller navn
  • Sortering av forsendelser basert på postnummer eller sporingsnummer
  • Sortering av kundelister etter region eller alder

Eksempler på SQL ORDER BY

Nå skal vi se på tre eksempler der vi bruker ORDER BY.

Sortering av produkter etter pris

I dette eksemplet skal vi sortere produkter fra kategorien «Hår» i stigende rekkefølge etter pris. Vi bruker FROM og WHERE for å angi hvilke varer vi ønsker å sortere. Med ORDER BY og ASC angir vi at vi ønsker å sortere dem i stigende rekkefølge etter pris. Syntaksen ser slik ut:

SELECT  *
FROM  Products
WHERE  Category  = 'Hair'
ORDER BY  Price  ASC;
sql

Filtrering av kunder

La oss si at du jobber i en tabell som heter «Kunder» og ønsker å sortere alle kunder fra Storbritannia etter navn. Du vil sortere dem i omvendt alfabetisk rekkefølge, fra Z til A, så du legger til DESC i kommandoen ORDER BY.

SELECT  *
FROM  Customers
WHERE  Country = 'UK'
ORDER BY  Name  DESC;
sql

Sortering etter flere kategorier

I dette eksemplet ønsker du å sortere produkter fra kategorien «Elektronikk» etter bestillingsmengde. Hvis bestillingsmengdene er identiske, ønsker du å sortere dem etter hvilket land bestillingen kommer fra.

SELECT  *
FROM  Products
WHERE  Category  =  'Electronics'
ORDER BY  OrderQuantity ASC,  Country  DESC;
sql

Finnes det alternativer til SQL ORDER BY?

Det finnes ingen alternativer til ORDER BY i SQL som har samme funksjon. GROUP BY er imidlertid en SQL-kommando som ofte brukes sammen med ORDER BY. GROUP BY kan brukes til å gruppere poster etter kategorier, og ORDER BY kan i tillegg sortere disse postene.

Et eksempel: La oss si at du ønsker å gruppere kundenes bestillingsmengder etter land og deretter bruke aggregeringsfunksjonen AVG til å sortere etter gjennomsnittlig bestillingsmengde. Syntaksen for dette vil se slik ut:

SELECT  Country, AVG(OrderQuantity)
FROM  Customers
WHERE  Category = 'Electronics'
GROUP BY  Country
ORDER BY  AVG(OrderQuantity) ASC;
sql

Du kan også bruke en HAVING-klausul til å filtrere de sorterte postene ut fra søkekriterier og betingelser. LIMIT kan brukes til å begrense resultatsettet til et bestemt antall.

Go to Main Menu