Problem:
Du vil gerne sortere resultatet af en SQL-forespørgsel i stigende eller faldende rækkefølge.
Eksempel:
Vores database har en tabel med navnet salary_information
med data i kolonnerne id
, first_name
, last_name
og monthly_earnings
. Vi ønsker at sortere medarbejderne efter deres monthly_earnings
i faldende rækkefølge.
id | fornavn | efternavn | månedlig_indtjening |
---|---|---|---|
1 | Calvin | Rios | 3500 |
2 | Alan | Paterson | 4000 |
3 | Kurt | Evans | 2300 |
4 | Alex | Watkins | 5500 |
Løsning:
Vi bruger en ORDER BY
klausul. Her er forespørgslen:
Vi bruger funktionen CURRENT_DATE
for at få den aktuelle dato:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY monthly_earnings DESC
Her er resultatet af forespørgslen:
fornavn | efternavn | månedlig_indtjening |
---|---|---|
Alex | Watkins | 5500 |
Alan | Paterson | 4000 |
Calvin | Rios | 3500 |
Kurt | Evans | 2300 |
Nu kan vi se, at Alex Watkins er først på listen, hvilket betyder, at han tjener flest penge.
Diskussion:
Brug en ORDER BY
klausul, hvis du vil sortere datasættet i enten stigende eller faldende rækkefølge. Syntaksen for en ORDER BY
klausul er som følger:
SELECT col1, col2, … FROM table ORDER BY col1, col2, … ASC|DESC;
I ovenstående, ASC|DESC
betyder, at du enten skal vælge søgeordet ASC
(stigende) eller DESC
(faldende) for at bestille datasættet, som du ønsker det.
Udover at sortere efter numeriske kolonner, kan du også sortere efter tekstkolonner. En ORDER BY
klausul vil sortere tekstkolonner i alfabetisk rækkefølge.
I stedet for kolonnenavnet kan du også bruge kolonnens placering fra venstre. Så i vores eksempel, i stedet for at skrive:
ORDER BY monthly_earnings DESC
du kan også skrive:
ORDER BY 3 DESC
Hvis du vil sortere tabellen fra eksemplet efter first_name
kolonne i alfabetisk (stigende) rækkefølge, kan du bruge følgende forespørgsel:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY first_name ASC
Det er også værd at bemærke, at du kan sortere efter flere kolonner. Dette er nyttigt, når nogle værdier i en given kolonne gentages, og du har brug for yderligere sortering. I dette tilfælde skal du adskille kolonnenavnene med kommaer i ORDER BY-sætningen.
Du kan endda sortere i stigende rækkefølge efter én kolonne og i faldende rækkefølge efter en anden. Det følgende illustrerer syntaksen for denne kombination:
ORDER BY Col1 ASC, Col2 DESC;
Hvis du udelader ASC
eller DESC
søgeord, udføres en stigende sortering som standard.