Найти тему
wq wq

SQL. 4 УРОК.

Оглавление

Прошлый урок.

В SQL часто кроме фильтрации данных, также часто требуется отсортировать их по одному из столбцов.

В первом уроке мы написали SQL-запрос для получения данных о совершеннолетних пользователях. Посмотрим на него еще раз:

SELECT last_name, first_name, birthday FROM users WHERE age >= 18

Картинка 1.

Обратите внимание, что сейчас данные никак не упорядочены. Ни по фамилии, ни по имени, ни по дате рождения. Но давайте добавим после конструкции 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.