Прошлый урок.
В SQL часто кроме фильтрации данных, также часто требуется отсортировать их по одному из столбцов.
В первом уроке мы написали SQL-запрос для получения данных о совершеннолетних пользователях. Посмотрим на него еще раз:
SELECT last_name, first_name, birthday FROM users WHERE age >= 18
Обратите внимание, что сейчас данные никак не упорядочены. Ни по фамилии, ни по имени, ни по дате рождения. Но давайте добавим после конструкции WHERE: ORDER BY last_name:.
SELECT last_name, first_name, birthday
FROM users WHERE age >= 18 ORDER BY last_name
После выполнение данного SQL запроса мы получим таблицу отсортированную по столбцу last_name (фамилия). Так как last_name хранит строки, то сортировка происходит в алфавитном порядке: Картинка 2.
Обратите внимание, что данные отсортированы только по фамилии, но не по другим полям. Однако давайте добавим через запятую еще один столбец, например, first_name:
SELECT last_name, first_name, birthday
FROM users WHERE age >= 18 ORDER BY last_name, first_name
Теперь таблица отсортирована сразу по двум поля, сперва по фамилии, а уже затем по имени: Картинка 3.
Разумеется, сортировать можно не только по текстовым полям. Например, можно написать ORDER BY birthday:
SELECT last_name, first_name, birthday
FROM users
WHERE age >= 18
ORDER BY birthday
И получить данные упорядоченные по дате рождения в хронологическом порядке: Картинка 4.
А если в конструкции ORDER BY после имени столбца написать DESC, то данные будут отсортированы в обратном порядке — свежие даты выше: Картинка 5.
Более того при сортировке данных по нескольким столцам, мы можем для разных столцов указывать разные направления сортировки. Например ORDER BY last_name, birthday DESC:
SELECT last_name, first_name, birthday
FROM users
WHERE age >= 18
ORDER BY last_name, birthday DESC
Тогда данные будут сперва отсортированы в алфавитном порядке по фамилии, а уже внутри каждой фамилии по дате рождения в обратном порядке: Картинка 6.