Med SQL-kom­man­do­en ORDER BY kan du sortere sø­ge­re­sul­ta­ter­ne efter dine egne behov, enten i stigende eller faldende ræk­ke­føl­ge. Ved at sortere dataene i din måltabel i rækker og kolonner kan du gøre re­sul­ta­ter­ne mere over­sku­e­li­ge og læselige. Det optimerer og frem­skyn­der igen dine da­ta­a­na­ly­ser og fo­re­spørgs­ler i komplekse datasæt.

Hvad er SQL ORDER BY?

Du kan bruge SQL ORDER BY til at sortere data og re­sul­ta­ter fra både enkle og komplekse datasæt. Kom­man­do­en giver dig mulighed for at definere, hvordan dataene skal ranges i må­l­ta­bel­len. Derudover kan du angive, om dataene skal sorteres i stigende eller faldende ræk­ke­føl­ge. På den måde hjælper ORDER BY med at levere fo­re­spørgsels­re­sul­ta­ter, der er over­sku­e­li­ge og let­læ­se­li­ge.

Som standard viser ORDER BY re­sul­ta­ter­ne i stigende ræk­ke­føl­ge, dvs. fra A til Z eller fra den mindste til den største værdi. Hvis du fo­re­træk­ker re­sul­ta­ter­ne i faldende ræk­ke­føl­ge, kan du bruge det valgfri nøgleord DESC. Du kan angive en eller flere må­l­ko­lon­ner for re­sul­ta­ter­ne.

SQL ORDER BY er vigtigt for at kunne udføre vel­struk­tu­re­re­de og hurtige fo­re­spørgs­ler. Det bruges ofte sammen med SELECT, WHERE og andre SQL-ope­ra­tø­rer og -funk­tio­ner som f.eks. GROUP BY.

Tip

Vil du gerne forstå SQL bedre, men ved ikke, hvor du skal begynde? Vores in­tro­duk­tion til SQL med eksempler gør det nemt at komme i gang med at lære dette populære da­ta­ba­se­sprog.

Hvordan ser syntaksen i SQL ORDER BY ud?

Syntaksen i SQL ORDER BY ser således ud:

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

Hvis du kun angiver én kolonne efter ORDER BY, får du en kolonne med sorterede re­sul­ta­ter. Hvis du angiver mere end én kolonne, sorteres re­sul­ta­ter­ne efter KolonneA. Hvis KolonneA in­de­hol­der identiske værdier i nogle rækker, sorteres disse rækker efter KolonneB.

Du kan udvide denne syntaks med yder­li­ge­re ope­ra­to­rer og parametre. En WHERE kan for eksempel bruges til at definere kriterier, der indsnæv­rer dine sø­ge­re­sul­ta­ter. Syntaksen for ORDER BY kom­bi­ne­ret med WHERE ser således ud:

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

Du kan også bruge følgende parametre:

  • SELECT: Du kan bruge SELECT til at angive, hvilke data du vil analysere. Brug en stjerne * for at hente hele da­ta­sæt­tet, eller indtast ko­lon­ne­nav­ne for at arbejde med de på­gæl­den­de kolonner.
  • FROM: Angiver, hvilken tabel du vil hente data fra.
  • WHERE: WHERE er en valgfri klausul til at definere sø­ge­kri­te­ri­er, der indsnæv­rer dine re­sul­ta­ter. Inden for en WHERE kan du bruge ope­ra­to­rer som =, LIKE eller NOT.
  • ORDER BY: Definerer, hvilken kolonne du vil sortere dine re­sul­ta­ter efter. Hvis du ikke tilføjer ASC eller DESC, vil re­sul­ta­ter­ne som standard blive sorteret i stigende ræk­ke­føl­ge.
Note

Afhængigt af databasen sorteres NULL-værdier ORDER BY au­to­ma­tisk eller i henhold til den valgte sor­te­rings­ræk­ke­føl­ge. I SQLite, MySQL og SQL Server behandles NULL-værdier som de laveste værdier. Det betyder, at de vises først i stigende ræk­ke­føl­ge. I Oracle og Po­st­greSQL behandles NULL-værdier som de højeste værdier. De vises derfor sidst i stigende ræk­ke­føl­ge.

Hvad kan SQL ORDER BY bruges til?

Her er nogle eksempler på, hvordan SQL ORDER BY kan bruges i praksis:

  • Sortering af pro­duk­top­lys­nin­ger efter pro­duk­t­navn, kategori eller pris
  • Sortering af transak­tio­ner efter beløb, dato eller navn
  • Sortering af ordrer efter beløb eller be­døm­mel­ser
  • Sortering af me­d­ar­bej­de­re efter løn, kon­trak­ter, præ­sta­tion eller afdeling
  • Oversigt over la­ger­be­hold­ning baseret på mængde eller navn
  • Sortering af for­sen­del­ser efter po­st­num­mer eller spor­ings­num­mer
  • Sortering af kun­de­li­ster efter region eller alder

Eksempler på SQL ORDER BY

Vi vil nu se på tre eksempler, hvor ORDER BY indgår.

Sortering af produkter efter pris

I dette eksempel sorterer vi produkter fra ka­te­go­ri­en »Hår« i stigende ræk­ke­føl­ge efter pris. Vi bruger FROM og WHERE til at angive, hvilke varer vi vil sortere. Med ORDER BY og ASC angiver vi, at vi vil sortere dem i stigende ræk­ke­føl­ge efter pris. Syntaksen ser således ud:

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

Fil­tre­ring af kunder

Lad os sige, at du arbejder i en tabel ved navn »Kunder« og vil sortere alle kunder fra Stor­bri­tan­ni­en efter deres navn. Du vil sortere dem i omvendt al­fa­be­tisk ræk­ke­føl­ge fra Z til A, så du tilføjer DESC til kom­man­do­en ORDER BY.

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

Sortering efter flere ka­te­go­ri­er

I dette eksempel vil du sortere produkter fra ka­te­go­ri­en »Elek­tro­nik« efter or­dre­mæng­de. Hvis or­dre­mæng­der­ne er ens, vil du sortere dem efter det land, ordren kommer fra.

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

Findes der al­ter­na­ti­ver til SQL ORDER BY?

Der findes ingen al­ter­na­ti­ver til ORDER BY i SQL, der har samme funktion. GROUP BY er dog en SQL-kommando, der ofte bruges sammen med ORDER BY. GROUP BY kan bruges til at gruppere poster efter ka­te­go­ri­er, og ORDER BY kan desuden sortere disse poster.

Et eksempel: Lad os sige, at du vil gruppere kundernes or­dre­mæng­der efter land og derefter bruge ag­gre­ge­rings­funk­tio­nen AVG til at sortere efter den gen­nem­snit­li­ge or­dre­mæng­de. Syntaksen for dette vil se således ud:

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

Du kan også bruge en HAVING- klausul til at filtrere de sorterede poster ud fra sø­ge­kri­te­ri­er og be­tin­gel­ser. LIMIT kan bruges til at begrænse re­sul­tat­sæt­tet til et bestemt antal.

Gå til ho­ved­me­nu­en