В этом учебном пособии вы узнаете, как использовать в PostgreSQL оператор ORDER BY с синтаксисом и примерами.
Описание
PostgreSQL оператор ORDER BY используется для сортировки записей в вашем результирующем наборе. ORDER BY можно использовать только в операторе SELECT.
Синтаксис
Синтаксис для предложения ORDER BY в PostgreSQL:
FROM tables
[WHERE conditions]
ORDER BY expression [ASC | DESC | USING operator] [NULLS FIRST | NULLS LAST];
Параметры или аргументы
- expressions
- Столбцы или вычисления, которые вы хотите получить.
- tables
- Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.
- WHERE conditions
- Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны.
- ASC
- Необязательный. Он сортирует результирующий набор в порядке возрастания по expression (по умолчанию, если модификатор не указан).
- DESC
- Необязательный. Он сортирует результирующий набор в порядке убывания по expression.
- NULLS FIRST
- Необязательный. Если указано, все значения NULL сортируются перед значениями, отличных от NULL, в результирующем наборе.
- NULLS LAST
- Необязательный. Если указано, все значения NULL сортируются после значений, отличных от NULL, в результирующем наборе.
Примечание
- Если модификатор ASC или DESC не указан в ORDER BY, результаты будут отсортированы по expression в порядке возрастания. Это эквивалентно ORDER BY expression ASC.
Пример - сортировка без использования атрибута ASC / DESC
PostgreSQL оператор ORDER BY можно использовать без указания модификатора ASC или DESC. Когда этот атрибут опущен в операторе ORDER BY, порядок сортировки по умолчанию устанавливается в ASC (в порядке возрастания).
Например:
1 2 3 4 |
SELECT last_name, first_name FROM contacts WHERE state = 'California' ORDER BY last_name; |
Этот пример будет возвращать все записи, отсортированные по полю last_name в порядке возрастания, и будет эквивалентен следующему оператору ORDER BY:
1 2 3 4 |
SELECT last_name, first_name FROM contacts WHERE state = 'California' ORDER BY last_name ASC; |
Большинство программистов пропускают атрибут ASC при сортировке в порядке возрастания.
Пример - сортировка по убыванию
При сортировке набора результатов в порядке убывания вы используете атрибут DESC в ORDER BY следующим образом:
1 2 3 4 |
SELECT last_name, first_name, city FROM contacts WHERE first_name = 'Nikol' ORDER BY last_name DESC; |
В этом PostgreSQL примере ORDER BY будут возвращены все записи, отсортированные по полю last_name в порядке убывания.
Пример - сортировка по относительной позиции
Вы также можете использовать PostgreSQL оператор ORDER BY для сортировки по относительной позиции (порядковой позиции) в результирующем наборе, где первое поле в результирующем наборе равно 1. Следующее поле равно 2 и т.д.
Например:
1 2 3 4 |
SELECT last_name, first_name, city FROM contacts WHERE first_name = 'Elena' ORDER BY 3 DESC; |
Этот PostgreSQL ORDER BY будет возвращать все записи, отсортированные по полю city в порядке убывания, поскольку поле city находится в позиции № 3 в результирующем наборе и будет эквивалентно следующему ORDER BY:
1 2 3 4 |
SELECT last_name, first_name, city FROM contacts WHERE first_name = 'Elena' ORDER BY city DESC; |
Пример - использование атрибутов ASC и DESC
При сортировке набора результатов с помощью PostgreSQL оператора ORDER BY вы можете использовать атрибуты ASC и DESC в одном операторе SELECT.
Например:
1 2 3 4 |
SELECT last_name, first_name, city FROM contacts WHERE first_name = 'Elena' ORDER BY last_name ASC, first_name DESC; |
Этот PostgreSQL ORDER BY будет возвращать все записи, отсортированные по полю last_name в порядке возрастания, с вторичной сортировкой по first_name в порядке убывания.