Сортировка результатов
С помощью команды SELECT результаты были возвращены в том же порядке, в котором записи были добавлены в базу данных. Это порядок сортировки по умолчанию. В этом разделе мы рассмотрим, как мы можем сортировать результаты наших запросов. Сортировка — это просто переупорядочивание результатов нашего запроса указанным способом . Сортировка может выполняться по одному столбцу или по нескольким столбцам. Это можно сделать для чисел, строк, а также типов данных даты.
Что такое ORDER BY в MySQL?
MySQL ORDER BY используется вместе с запросом SELECT для упорядоченной сортировки данных. Предложение order by используется для сортировки наборов результатов запроса в порядке возрастания или убывания.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
ВОТ
- «Оператор SELECT …» — это обычный запрос выбора
- «|» представляет альтернативы
- «[ГДЕ условие | ГРУППА BY» field_name (s) «HAVING условие» — это необязательное условие, используемое для фильтрации наборов результатов запроса.
- «ORDER BY» выполняет сортировку набора результатов запроса
- «[ASC | DESC]» — это ключевое слово, используемое для сортировки наборов результатов в порядке возрастания или убывания. Примечание ASC используется по умолчанию.
Что такое ключевые слова DESC и ASC?
Используется для сортировки результатов запроса в стиле сверху вниз. |
Используется для сортировки результатов запроса в стиле снизу вверх |
При работе с типами данных date самая ранняя дата отображается в верхней части списка. |
, При работе с типами дат самая последняя дата отображается в верхней части списка. |
При работе с числовыми типами данных самые низкие значения отображаются в верхней части списка. |
При работе с числовыми типами данных самые высокие значения отображаются в верхней части набора результатов запроса. |
При работе со строковыми типами данных набор результатов запроса сортируется от тех, которые начинаются с буквы А и заканчиваются буквой Z. |
При работе со строковыми типами данных набор результатов запроса сортируется по тем, которые начинаются с буквы Z и идут вниз до буквы A. |
Ключевые слова DESC и ASC используются вместе в сочетании с оператором SELECT и предложением ORDER BY.
DESC и ASC синтаксис
Ключевое слово сортировки DESC имеет следующий основной синтаксис.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
ВОТ
- SELECT {fieldName (s) | *} FROM tableName (s) — это оператор, содержащий поля и таблицы, из которых можно получить результирующий набор.
- [ГДЕ условие] является необязательным, но может использоваться для фильтрации данных в соответствии с заданным условием.
- ORDER BY field (s) является обязательным и является полем, в котором должна быть выполнена сортировка. Ключевое слово DESC указывает, что сортировка должна быть в порядке убывания.
- [LIMIT] является необязательным, но может использоваться для ограничения количества результатов, возвращаемых из набора результатов запроса.
Примеры:
Давайте теперь посмотрим на практический пример —
SELECT * FROM members;
Выполнение вышеупомянутого сценария в MySQL Workbench против myflixdb дает нам следующие результаты, показанные ниже.
membership_number full_names gender date_of_birth physical_address postal_address contct_number 1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 [email protected] 2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL [email protected] 3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 [email protected] 4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL 5 Leonard Hofstadter Male NULL Woodcrest NULL 845738767 NULL 6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL 7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL 8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL 9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553
Let's suppose the marketing department wants the members details arranged in decreasing order of Date of Birth. This will help them send birthday greetings in a timely fashion. We can get the said list by executing a query like below -
SELECT * FROM members ORDER BY date_of_birth DESC;
Executing the above script in MySQL workbench against the myflixdb gives us the following results shown below.
The same query in ascending order
SELECT * FROM members ORDER BY date_of_birth ASC
Note: NULL values means no values (not zero or empty string) . Observe the way they have been sorted.
More examples
Let's consider the following script that lists all the member records.
SELECT * FROM `members`;
Executing the above script gives the following results shown below.
membership_number full_names gender date_of_birth physical_address postal_address contct_number 1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 [email protected] 2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL [email protected] 3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 [email protected] 4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL 5 Leonard Hofstadter Male NULL Woodcrest NULL 845738767 NULL 6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL 7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL 8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL 9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 NULL
Предположим, что мы хотим получить список, который сортирует набор результатов запроса, используя поле пола, мы будем использовать скрипт, показанный ниже.
SELECT * FROM `members` ORDER BY `gender`;
membership_number full_names gender date_of_birth physical_address postal_address contct_number 1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 [email protected] 2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL [email protected] 4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL 3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 [email protected] 5 Leonard Hofstadter Male NULL Woodcrest NULL 845738767 NULL 6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL 7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL 8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL 9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 NULL
Сначала отображались «женские» элементы, а затем «мужские», так как при использовании предложения order by без указания ключевого слова ASC или DESC по умолчанию MySQL сортирует набор результатов запроса в порядке возрастания.
Давайте теперь посмотрим на пример, который выполняет сортировку с использованием двух столбцов ; первый сортируется по возрастанию по умолчанию, а второй столбец сортируется по убыванию.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Выполнение вышеупомянутого сценария в MySQL Workbench против myflixdb дает следующие результаты.
По умолчанию столбец пола был отсортирован в порядке возрастания, а столбец даты рождения - в порядке убывания
Почему мы можем использовать DESC и ASC?
Предположим, что мы хотим напечатать историю платежей для члена библиотеки видео, чтобы помочь ответить на запросы со стойки регистрации, не будет ли более логичным печатать платежи в порядке убывания в хронологическом порядке, начиная с недавнего платежа до более раннего платежа?
Ключевое слово DESC пригодится в таких ситуациях. Мы можем написать запрос, который сортирует список по убыванию, используя дату платежа.
Предположим, что отдел маркетинга хочет получить список фильмов по категориям, которые участники могут использовать, чтобы решить, какие фильмы доступны в библиотеке при аренде фильмов, не будет ли более логичным смотреть сортировку названий и названий категорий фильмов по возрастанию, чтобы участники могут быстро искать информацию из списка?
Ключевое слово ASC пригодится в таких ситуациях; мы можем отсортировать список фильмов по названию категории и названию фильма в порядке возрастания.
Резюме
- Сортировка результатов запроса - это реорганизация строк, возвращаемых из набора результатов запроса, в порядке возрастания или убывания.
- Ключевое слово DESC используется для сортировки набора результатов запроса в порядке убывания.
- Ключевое слово ASC используется для сортировки набора результатов запроса в порядке возрастания.
- И DESC, и ASC работают в сочетании с ключевым словом ORDER BY. Их также можно использовать в сочетании с другими ключевыми словами, такими как предложение WHERE и LIMIT.
- По умолчанию для ORDER BY, когда ничего явно не указано, является ASC.