Problem:
Du måste visa poster från en given tabell sorterade efter två kolumner.
Exempel:
Vår databas har en tabell som heter employee
med följande kolumner:id
, first_name
, last_name
och salary
.
id | förnamn | efternamn | lön |
---|---|---|---|
1 | Lisa | Ulman | 3000 |
2 | Ada | Muller | 2400 |
3 | Thomas | Grön | 2400 |
4 | Michael | Muller | 3000 |
5 | Maria | Grön | 2400 |
Låt oss visa all information för varje anställd men sortera posterna efter lön i fallande ordning först och sedan efter efternamn i stigande ordning.
Lösning:
SELECT id, first_name, last_name, salary FROM employee ORDER BY salary DESC, last_name;
Den här frågan returnerar sorterade poster enligt två kolumner:lön och efternamn .
id | förnamn | efternamn | lön |
---|---|---|---|
4 | Michael | M uller | 3000 |
1 | Lisa | U lman | 3000 |
3 | Thomas | G reen | 2400 |
5 | Maria | G reen | 2400 |
2 | Ada | M uller | 2400 |
Diskussion:
Om du vill välja poster från en tabell men vill se dem sorterade efter två kolumner kan du göra det med ORDER BY
. Den här klausulen kommer i slutet av din SQL-fråga.
Efter ORDER BY
nyckelord, lägg till namnet på den kolumn som du vill sortera poster efter först (i vårt exempel, lön). Lägg sedan till den andra kolumnen efter ett kommatecken (i vårt exempel, last_name
). Du kan ändra sorteringsordningen (stigande eller fallande) separat för varje kolumn. Om du vill använda stigande (låg till hög) ordning kan du använda ASC
nyckelord; Detta nyckelord är dock valfritt, eftersom det är standardordningen när inget anges. Om du vill använda fallande ordning, sätt DESC
nyckelord efter lämplig kolumn (i exemplet använde vi fallande ordning för salary
kolumn).
I vårt exempel sorterade vi först resultatet efter lön i fallande ordning (högre löner till lägre) och sedan efter efternamn i stigande ordning inom de redan sorterade posterna.