după ce o interogare a produs un tabel de ieșire (după ce lista de selectare a fost procesată) poate fi sortată opțional. Dacă sortarea nu este aleasă, rândurile vor fi returnate într-o ordine nespecificată. Ordinea reală în acest caz va depinde de scanare și să se alăture tipuri de plan și ordinea pe disc, dar nu trebuie să se bazeze pe. O anumită comandă de ieșire poate fi garantată numai dacă pasul de sortare este ales în mod explicit.
clauza ORDER BY specifică ordinea de sortare:
SELECT select_list FROM table_expression ORDER BY column1 ...]
column1, etc., consultați selectați coloane listă. Acestea pot fi fie numele de ieșire al unei coloane (a se vedea secțiunea 7.3.2), fie numărul unei coloane. Câteva exemple:
SELECT a, b FROM table1 ORDER BY a;SELECT a + b AS sum, c FROM table1 ORDER BY sum;SELECT a, sum(b) FROM table1 GROUP BY a ORDER BY 1;
ca o extensie a standardului SQL, PostgreSQL permite, de asemenea, ordonarea prin expresii arbitrare:
SELECT a, b FROM table1 ORDER BY a + b;
referințele la numele coloanelor din clauza FROM care nu sunt prezente în Lista select sunt, de asemenea, permise:
SELECT a FROM table1 ORDER BY b;
dar aceste extensii nu funcționează în interogări care implică Uniune, INTERSECT, sau cu excepția, și nu sunt portabile la alte baze de date SQL.
fiecare specificație a coloanei poate fi urmată de un ASC sau DESC opțional pentru a seta direcția de sortare la ascendent sau descendent. Ordinul ASC este implicit. Ordinea crescătoare pune mai întâi valori mai mici, unde „mai mic” este definit în termeni de < operator. În mod similar, ordinea descrescătoare este determinată cu operatorul >.
dacă sunt specificate mai multe coloane de sortare, intrările ulterioare sunt utilizate pentru a sorta rândurile care sunt egale în ordinea impusă de coloanele de sortare anterioare.