Руководство по SQL. Сортировка данных.

Для сортировки данных, получаемых в результате запроса в языке SQL используется ключевое слово ORDER BY. База данных (далее – БД) сортирует данные по указанному параметру по убыванию, либо по возрастанию, в зависимости от условия указанного в запросе (ASC / DESC – соответственно).

Мы также можем использовать более одной колонки при использовании элемента ORDER BY.

Данный запрос имеет следующий общий вид:


SELECT колонка1, колонка2 ... колонкаN
FROM имя_таблицы
[WHERE условие] 
[ORDER BY колонка1, колонка2 ... колонкаN] [ASC | DESC];

Пример:

Предположим, что у нас есть таблица developers, которая содержит следующие данные:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
+----+-------------------+------------+------------+--------+

Допустим, что нам необходимо упорядочить разработчиков по зарплате по возрастанию.
Для этого мы должны использовать следующую команду:


mysql> SELECT * FROM developers ORDER BY SALARY ASC;

После выполнения данного запроса, мы получим следующий результат:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
+----+-------------------+------------+------------+--------+

Или же мы хотим упорядочить разработчиков по имени по возрастанию.
Для этого нам необходимо выполнить следующий запрос:


mysql> SELECT * FROM developers ORDER BY NAME ASC;

Полученные результат будет иметь следующий вид:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
+----+-------------------+------------+------------+--------+

Мы также можем задать свой собственный прядок сортировки.
Для этого нам необходимо составить следующий запрос:


mysql> SELECT * FROM developers
 ORDER BY (CASE SPECIALTY 
 WHEN 'C#' THEN 1 
 WHEN 'Java' THEN 2 
 WHEN 'UI/UX' THEN 3 
 ELSE 10 END) ASC;

После выполнения данного запроса мы получим следующий результат:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
+----+-------------------+------------+------------+--------+

На этом мы заканчиваем изучение способов сортировки данных, полученных в результате обработки SQL запроса.
В следующей статье мы рассмотрим группировку данных.