Problem:
Du skal vise poster fra en given tabel sorteret efter to kolonner.
Eksempel:
Vores database har en tabel med navnet employee
med følgende kolonner:id
, first_name
, last_name
og salary
.
id | fornavn | efternavn | løn |
---|---|---|---|
1 | Lisa | Ulman | 3000 |
2 | Ada | Muller | 2400 |
3 | Thomas | Grøn | 2400 |
4 | Michael | Muller | 3000 |
5 | Mary | Grøn | 2400 |
Lad os vise alle oplysninger for hver medarbejder, men sortere posterne efter løn i faldende rækkefølge først og derefter efter efternavn i stigende rækkefølge.
Løsning:
SELECT id, first_name, last_name, salary FROM employee ORDER BY salary DESC, last_name;
Denne forespørgsel returnerer sorterede poster i henhold til to kolonner:løn og efternavn .
id | fornavn | efternavn | løn |
---|---|---|---|
4 | Michael | M uller | 3000 |
1 | Lisa | U lman | 3000 |
3 | Thomas | G reen | 2400 |
5 | Mary | G reen | 2400 |
2 | Ada | M uller | 2400 |
Diskussion:
Hvis du vil vælge poster fra en tabel, men gerne vil se dem sorteret efter to kolonner, kan du gøre det med ORDER BY
. Denne klausul kommer i slutningen af din SQL-forespørgsel.
Efter ORDER BY
søgeord, skal du tilføje navnet på den kolonne, som du vil sortere poster efter først (i vores eksempel, løn). Tilføj derefter den anden kolonne efter et komma (i vores eksempel, last_name
). Du kan ændre sorteringsrækkefølgen (stigende eller faldende) separat for hver kolonne. Hvis du vil bruge stigende (lav til høj) rækkefølge, kan du bruge ASC
søgeord; dette nøgleord er dog valgfrit, da det er standardrækkefølgen, når ingen er angivet. Hvis du vil bruge faldende rækkefølge, indsæt DESC
søgeord efter den relevante kolonne (i eksemplet brugte vi faldende rækkefølge for salary
kolonne).
I vores eksempel sorterede vi først resultatet efter løn i faldende rækkefølge (højere lønninger til lavere) og derefter efter efternavn i stigende rækkefølge inden for de allerede sorterede poster.