Problem:
Du vill sortera resultatet av en SQL-fråga i stigande eller fallande ordning.
Exempel:
Vår databas har en tabell som heter salary_information
med data i kolumnerna id
, first_name
, last_name
och monthly_earnings
. Vi vill sortera de anställda efter deras monthly_earnings
i fallande ordning.
id | förnamn | efternamn | månatliga_intäkter |
---|---|---|---|
1 | Calvin | Rios | 3500 |
2 | Alan | Paterson | 4000 |
3 | Kurt | Evans | 2300 |
4 | Alex | Watkins | 5500 |
Lösning:
Vi kommer att använda en ORDER BY
klausul. Här är frågan:
Vi använder funktionen CURRENT_DATE
för att få aktuellt datum:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY monthly_earnings DESC
Här är resultatet av frågan:
förnamn | efternamn | månatliga_intäkter |
---|---|---|
Alex | Watkins | 5500 |
Alan | Paterson | 4000 |
Calvin | Rios | 3500 |
Kurt | Evans | 2300 |
Nu kan vi se att Alex Watkins är först på listan, vilket betyder att han tjänar mest pengar.
Diskussion:
Använd en ORDER BY
om du vill sortera datamängden i antingen stigande eller fallande ordning. Syntaxen för en ORDER BY
klausulen är som följer:
SELECT col1, col2, … FROM table ORDER BY col1, col2, … ASC|DESC;
I ovanstående, ASC|DESC
betyder att du ska välja antingen nyckelordet ASC
(stigande) eller DESC
(fallande) för att ordna datasetet som du vill.
Förutom att sortera efter numeriska kolumner, kan du också sortera efter textkolumner. En ORDER BY
kommer att sortera textkolumner i alfabetisk ordning.
Istället för kolumnnamnet kan du också använda kolumnens position från vänster. Så i vårt exempel, istället för att skriva:
ORDER BY monthly_earnings DESC
du kan också skriva:
ORDER BY 3 DESC
Om du vill sortera tabellen från exemplet efter first_name
kolumn i alfabetisk (stigande) ordning kan du använda följande fråga:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY first_name ASC
Det är också värt att notera att du kan sortera efter flera kolumner. Detta är användbart när vissa värden i en viss kolumn upprepas och du behöver ytterligare sortering. I det här fallet, separera kolumnnamnen med kommatecken i ORDER BY-satsen.
Du kan till och med sortera i stigande ordning efter en kolumn och i fallande ordning efter en annan. Följande illustrerar syntaxen för denna kombination:
ORDER BY Col1 ASC, Col2 DESC;
Om du utelämnar ASC
eller DESC
nyckelord, utförs en stigande sortering som standard.