Для сортировки данных, получаемых в результате запроса в языке 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 запроса.
В следующей статье мы рассмотрим группировку данных.