ORDER BY
в PostgreSQL используется для сортировки строк в результирующем наборе запроса. По умолчанию сортировка выполняется в порядке возрастания (ASC
), но можно указать порядок убывания (DESC
).
Сортировка по одному столбцу
Сортировка списка пользователей по имени в алфавитном порядке:
SELECT * FROM users ORDER BY name;
Сортировка по убыванию:
SELECT * FROM users ORDER BY name DESC;
Сортировка по нескольким столбцам
Если указано несколько столбцов, сортировка сначала выполняется по первому, затем по второму:
SELECT * FROM users ORDER BY age DESC, name ASC;
Сначала сортируются строки по age
(по убыванию), затем внутри каждой возрастной группы сортировка выполняется по name
(по возрастанию).
Сортировка с NULL значениями
По умолчанию NULL
значения идут первыми при сортировке по возрастанию и последними при сортировке по убыванию. Это поведение можно изменить:
SELECT * FROM users ORDER BY age NULLS FIRST;
SELECT * FROM users ORDER BY age NULLS LAST;
Ограничение числа строк после сортировки
Для выборки первых N
строк после сортировки используется LIMIT
:
SELECT * FROM users ORDER BY age DESC LIMIT 5;
Можно также пропустить первые N
строк с помощью OFFSET
:
SELECT * FROM users ORDER BY age DESC LIMIT 5 OFFSET 10;