wprowadzenie
podczas pobierania danych w PostgreSQL prawdopodobnie będziesz chciał, aby wyniki były sortowane w określony sposób. W PostgreSQL możesz określić kolejność sortowania wyników za pomocą klauzuliORDER BY
. Ta klauzula pozwala określić kolumnę, według której chcesz sortować wyniki, a także umożliwia wybór między kolejnością rosnącą i malejącą. W tym artykule przyjrzymy się bliżej opcjom porządku rosnącego i malejącego PostgreSQL.
wymagania wstępne
aby zapoznać się z przykładami, które przyjrzymy się w tym samouczku, musisz upewnić się, że serwer PostgreSQL jest poprawnie zainstalowany i skonfigurowany. Usługa musi działać w tle.
Jeśli pracujesz w środowisku Linux lub Windows, możesz pobrać PostgreSQL tutaj.
czym jest klauzula ORDER BY PostgreSQL?
gdy chcemy pobrać dane z tabeli PostgreSQL, tworzymy polecenieSELECT
. Domyślnie PostgreSQL zwróci wiersze w tej samej kolejności, w jakiej zostały wstawione. Możemy jednak dostosować nasze wyniki, aby były bardziej czytelne, sortując je. Istnieją dwa sposoby sortowania wyników: rosnąco i malejąco. Używamy klauzuli PostgreSQL ORDER BY
w naszej instrukcji SELECT
, aby określić nasze preferencje sortowania.
Poniżej znajduje się składnia dla klauzuli PostgreSQLORDER BY
:
1
2 3 4 5 6 |
wybierzname_of_the_column
from target_table order by name_of_the_column ASC |
omówmy tę składnię nieco bardziej szczegółowo:
- najpierw określamy nazwę kolumny, której będziemy używać do sortowania w klauzuli
ORDER BY
. Jeśli chcemy posortować kilka kolumn, oddzielamy je przecinkiem. - po określeniu nazwy naszej kolumny używamy
ASC
aby określić kolejność rosnącą lubDESC
dla kolejności malejącej. Domyślną wartością klauzuliORDER BY
jestASC
lub kolejność rosnąca, jeśli nie podano żadnej wartości.
Tworzenie przykładowego zestawu danych
będziemy musieli utworzyć przykładowy zestaw danych do wykorzystania w naszych przykładach. Zacznijmy od utworzenia tabeli o nazwie 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 wierszy) |
przykład użycia zamówienia PostgreSQL przez ASC
teraz, gdy dowiedzieliśmy się, jak PostgreSQL ORDER BY
instrukcja działa, spróbujemy jej użyć do sortowania rekordów, które utworzyliśmy w poprzedniej sekcji.
użyjmy następującej instrukcji:
1
|
SELECT * FROM client_info zamów przez client_firstname ASC;
|
Ta instrukcja poinstruuje PostgreSQL, aby wybrał wszystkie wiersze w tabeliclient_info
I posortował je na podstawieclient_firstname
kolumna w kolejności rosnącej.
wyniki tego zapytania będą wyglądać mniej więcej tak:
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 wierszy) |
widzimy, że wartości w polu client_firstname
są posortowane w kolejności rosnącej Alfabetycznie– nasze zapytanie zakończyło się sukcesem.
przykład przy użyciu PostgreSQL ORDER BY DESC
w poprzednim przykładzie użyliśmy klauzuliORDER BY
z opcjąASC
dla kolejności rosnącej. Teraz zrobimy odwrotnie i użyjemy ORDER BY
z DESC
, aby sortować w porządku malejącym.aby to zrobić, użyjemy następującego polecenia:
1
|
SELECT * FROM client_info Zamów przez client_age DESC;
|
powyższy kod posortuje pobrane wiersze w kolejności malejącej na podstawie client_age
.
wyniki będą wyglądać mniej więcej tak:
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 wierszy) |
zgodnie z oczekiwaniami wartości w kolumnie client_age
są sortowane i zwracane w kolejności malejącej.
wnioski
sortowanie wyników może przynieść porządek i czytelność niezorganizowanych danych, dlatego ważne jest, aby wiedzieć, jak określić preferencje sortowania w zapytaniach do bazy danych. W tym samouczku omówiliśmy klauzulę PostgreSQL ORDER BY
, która pozwala na wybór kolejności rosnącej i malejącej jako opcji sortowania. Dzięki przykładom, które omówiliśmy wcześniej jako przewodnik, będziesz mógł określić kolejność sortowania we własnych zapytaniach do bazy danych.
tylko Kod
pokazany poniżej to wszystkie fragmenty kodu, na które spojrzeliśmy w naszym samouczku. Możesz je kopiować i modyfikować, aby pasowały do Twoich własnych zastosowań.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
SELECT * FROM client_info ORDER BY CLIENT_AGE DESC;
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 ); 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]’); SELECT * FROM CLIENT_INFO ORDER BY CLIENT_FIRSTNAME ASC; SELECT * FROM client_info ORDER BY client_age DESC; |