introduktion
När du hämtar data i PostgreSQL vill du förmodligen att dina resultat ska sorteras på ett visst sätt. I PostgreSQL kan du ange sorteringsordningen för dina resultat medORDER BY
– klausulen. Denna klausul låter dig ange kolumnen som du vill sortera dina resultat med, och det låter dig också välja mellan stigande ordning och fallande ordning. I den här artikeln kommer vi att titta närmare på alternativen PostgreSQL stigande ordning och fallande ordning.
förutsättningar
För att följa med de exempel Vi kommer att titta på i denna handledning måste du se till att PostgreSQL server är korrekt installerad och konfigurerad. Tjänsten måste köras i bakgrunden.
om du arbetar i en Linux-eller Windows-miljö kan du ladda ner PostgreSQL här.
Vad är PostgreSQL ORDER BY-klausulen?
När vi vill hämta data från en PostgreSQL-tabell skapar vi ett SELECT
uttalande. Som standard returnerar PostgreSQL raderna i samma ordning som de infogades. Vi kan dock justera våra resultat för att göra dem mer läsbara genom att sortera dem. Det finns två sätt att resultaten kan sorteras: stigande ordning och fallande ordning. Vi använder PostgreSQLORDER BY
– klausulen i vårtSELECT
– uttalande för att ange våra sorteringsinställningar.
nedan visas syntaxen för PostgreSQLORDER BY
klausul:
välj
name_of_the_column från target_table beställ efter name_of_the_column ASC |
låt oss diskutera denna syntax lite mer detaljerat:
- först anger vi kolumnnamnet som vi ska använda för sortering i
ORDER BY
– klausulen. Om vi vill sortera efter ett antal kolumner separerar vi dem med ett komma. - när vi har angett vårt kolumnnamn använder vi
ASC
för att ange stigande ordning ellerDESC
för fallande ordning. Standardvärdet förORDER BY
klausulen ärASC
eller stigande ordning om inget värde anges.
skapa en Exempeldatauppsättning
Vi måste skapa en exempeldatauppsättning som ska användas i våra exempel. Låt oss börja med att skapa en tabell med namnet client_info
:
1
2 3 4 5 6 7 |
CREATE TABLE client_info(
client_id INT PRIMARY KEY NOT NULL, client_firstname TEXT NOT NULL, client_lastname TEXT NOT NULL, client_age INT NOT NULL, client_email TEXT NOT NULL ); |
Now, let’s put some records in the table:
1
2 3 4 5 6 7 |
INSERT INTO client_info(client_id,client_firstname, client_lastname, client_age, client_email)
VALUES (1,’John’,’Turf’,17,’[email protected]’), (2,’Raizel’,’Mendez’,16,’[email protected]’), (3,’Gwyneth’,’Damon’,16,’[email protected]’), (4,’Yeshua’,’Galisanao’,8,’[email protected]’), (5,’Dereck’,’Scott’,10,’[email protected]’); |
We can verify that our INSERT
was successful with a SELECT
query statement:
1
2 3 4 5 6 7 8 9 |
testdatabase=# SELECT * FROM client_info;
client_id | client_firstname | client_lastname | client_age | client_email ———–+——————+—————–+————+———————— 1 | John | Turf | 17 | [email protected] 2 | Raizel | Mendez | 16 | [email protected] 3 | Gwyneth | Damon | 16 | [email protected] 4 | Yeshua | Galisanao | 8 | [email protected] 5 | Dereck | Scott | 10 | [email protected] (5 rader) |
ett exempel med PostgreSQL ORDER av ASC
Nu när vi har lärt oss hur PostgreSQL ORDER BY
uttalande fungerar, vi försöker använda den för att sortera de poster som vi skapade i föregående avsnitt.
Låt oss använda följande uttalande:
1
|
välj * från client_info beställ av client_firstname ASC;
|
detta uttalande instruerar PostgreSQL att välja alla rader i tabellen client_info
och sortera dem baserat på client_firstname
kolumn i stigande ordning.
resultaten av denna fråga kommer att se ut som följande:
1
2 3 4 5 6 7 8 |
client_id | client_firstname | client_lastname | client_age | client_email
———–+——————+—————–+————+———————— 5 | Dereck | Scott | 10 | [email protected] 3 | Gwyneth | Damon | 16 | [email protected] 1 | John | Turf | 17 | [email protected] 2 | Raizel | Mendez | 16 | [email protected] 4 | Yeshua | Galisanao | 8 | [email protected] ( 5 rader) |
Vi kan se att värdena i fältetclient_firstname
sorteras i stigande alfabetisk ordning– vår fråga lyckades.
ett exempel med PostgreSQL ORDER BY DESC
i föregående exempel använde vi ORDER BY
klausul med ASC
alternativ för stigande ordning. Nu gör vi motsatsen och använder ORDER BY
med DESC
för att sortera i fallande ordning.
för att göra detta använder vi följande uttalande:
1
|
välj * från client_info order by Client_age desc;
|
koden som visas ovan sorterar de hämtade raderna i fallande ordning baserat påclient_age
.
resultaten kommer att se ut så här:
1
2 3 4 5 6 7 8 |
client_id | client_firstname | client_lastname | client_age | client_email
———–+——————+—————–+————+———————— 1 | John | Turf | 17 | [email protected] 2 | Raizel | Mendez | 16 | [email protected] 3 | Gwyneth | Damon | 16 | [email protected] 5 | Dereck | Scott | 10 | [email protected] 4 | Yeshua | Galisanao | 8 | [email protected] ( 5 rader) |
som vi förväntade oss sorteras värdena i kolumnenclient_age
och returneras i fallande ordning.
slutsats
att sortera dina resultat kan ge ordning och läsbarhet för oorganiserade data, och det är viktigt att veta hur du anger dina sorteringsinställningar i dina databasfrågor. I den här handledningen pratade vi om PostgreSQL ORDER BY
– klausulen, som låter dig välja mellan stigande ordning och fallande ordning som dina sorteringsalternativ. Med de exempel som vi diskuterade tidigare som en guide kan du ange sorteringsordning i dina egna databasfrågor.
bara koden
som visas nedan är alla kodavsnitt som vi tittade på under hela vår handledning. Kopiera och ändra dem så att de passar dina egna användningsfall.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
välj * från client_info ORDER BY client_age DESC;
Skapa tabell client_info ( client_id int primärnyckel inte NULL, client_firstname TEXT inte NULL, client_lastname TEXT inte NULL, client_age INT inte NULL, client_email TEXT inte NULL ); Infoga i client_info(client_id,client_firstname, client_lastname, client_age, client_email) VALUES (1,’John’,’Turf’,17,’[email protected]’), (2,’Raizel’,’Mendez’,16,’[email protected]’), (3,’Gwyneth’,’Damon’,16,’[email protected]’), (4,’Yeshua’,’Galisanao’,8,’[email protected]’), (5,’Dereck’,’Scott’,10,’[email protected]’); välj * från client_info ORDER BY client_firstname ASC; välj * från client_info ORDER BY client_age DESC; |