Сортировка результатов
При использовании команды SELECT результаты были возвращены в том же порядке, в котором записи были добавлены в базу данных. Это порядок сортировки по умолчанию. В этом разделе мы рассмотрим, как можно отсортировать результаты нашего запроса. Сортировка - это просто перегруппировка результатов нашего запроса определенным образом. Сортировку можно выполнять по одному столбцу или по нескольким столбцам. Это может быть сделано для чисел, строк, а также для типов данных даты.
Что такое ORDER BY в MySQL?
MySQL ORDER BY используется вместе с запросом SELECT для упорядоченной сортировки данных. Предложение MySQL ORDER BY используется для сортировки наборов результатов запроса в возрастающем или убывающем порядке.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
ЗДЕСЬ
- «Оператор SELECT…» - это обычный запрос выбора.
- "|" представляет альтернативы
- "[WHERE condition | GROUP BY` field_name (s) `HAVING condition" - необязательное условие, используемое для фильтрации наборов результатов запроса.
- «ORDER BY» выполняет сортировку набора результатов запроса.
- «[ASC | DESC]» - это ключевое слово, используемое для сортировки наборов результатов в возрастающем или убывающем порядке. Примечание. ASC используется по умолчанию.
Что такое ключевые слова DESC и ASC?
ASC - это краткая форма восходящего |
MySQL DESC - это сокращенная форма для нисходящего |
Он используется для сортировки результатов запроса в стиле сверху вниз. |
Он используется для сортировки результатов запроса в стиле снизу вверх. |
При работе с типами данных даты самая ранняя дата отображается вверху списка. |
. При работе с типами дат самая последняя дата отображается вверху списка. |
При работе с числовыми типами данных самые низкие значения отображаются вверху списка. |
При работе с числовыми типами данных самые высокие значения отображаются в верхней части набора результатов запроса. |
При работе со строковыми типами данных набор результатов запроса сортируется от тех, которые начинаются с буквы A и заканчиваются буквой Z. |
При работе со строковыми типами данных набор результатов запроса сортируется от тех, которые начинаются с буквы Z и заканчиваются буквой A. |
Ключевые слова SQL DESC и ASC используются вместе в сочетании с оператором SELECT и предложением MySQL ORDER BY.
Синтаксис DESC и ASC
Ключевое слово сортировки SQL DESC имеет следующий базовый синтаксис.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
ЗДЕСЬ
- ВЫБЕРИТЕ {fieldName (s) | *} FROM tableName (s) - это оператор, содержащий поля и таблицы, из которых следует получить набор результатов.
- [WHERE condition] не является обязательным, но может использоваться для фильтрации данных в соответствии с заданным условием.
- ORDER BY fieldname (s) является обязательным и является полем, по которому должна выполняться сортировка. Ключевое слово MySQL DESC указывает, что сортировка должна быть в порядке убывания.
- [LIMIT] является необязательным, но может использоваться для ограничения количества результатов, возвращаемых из набора результатов запроса.
Примеры:
Давайте теперь посмотрим на практический пример -
SELECT * FROM members;
Выполнение вышеуказанного сценария в рабочей среде MySQL для 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 |
Предположим, отдел маркетинга хочет, чтобы данные участников были расположены в порядке убывания даты рождения. Это поможет им своевременно отправлять поздравления с днем рождения. Мы можем получить указанный список, выполнив запрос, как показано ниже -
SELECT * FROM members ORDER BY date_of_birth DESC;
Выполнение вышеуказанного сценария в рабочей среде MySQL для myflixdb дает нам следующие результаты, показанные ниже.
Тот же запрос в порядке возрастания
ВЫБРАТЬ * ИЗ членов ЗАКАЗАТЬ ПО date_of_birth ASC
Примечание: значения NULL означают отсутствие значений (кроме нуля или пустой строки). Обратите внимание на то, как они были отсортированы.
Еще примеры
Рассмотрим следующий сценарий, в котором перечислены все записи участников.
SELECT * FROM `members`;
Выполнение вышеуказанного сценария дает следующие результаты, показанные ниже.
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 DESC без указания ключевого слова ASC или MySQL DESC, по умолчанию MySQL отсортировал набор результатов запроса в порядке возрастания.
Давайте теперь посмотрим на пример, в котором сортировка выполняется с использованием двух столбцов ; первый из них сортируются в порядке возрастания по умолчанию , в то время как второй столбец сортируется в порядке убывания.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Выполнение вышеуказанного сценария в рабочей среде MySQL для myflixdb дает следующие результаты.
Столбец пола был отсортирован по умолчанию в порядке возрастания, а столбец даты рождения был явно отсортирован в порядке убывания.
Почему мы можем использовать DESC и ASC?
Предположим, мы хотим распечатать историю платежей для члена видеотеки, чтобы помочь ответить на запросы на стойке регистрации, не было бы логичнее распечатать платежи в нисходящем хронологическом порядке, начиная с последнего платежа до предыдущего платежа?
DESC в SQL - это ключевое слово, которое может пригодиться в таких ситуациях. Мы можем написать запрос, который сортирует список по убыванию по дате платежа.
Предположим, отдел маркетинга хочет получить список фильмов по категориям, который участники могут использовать, чтобы решить, какие фильмы доступны в библиотеке при аренде фильмов, не было бы логичнее отсортировать имена категорий фильмов и названия по возрастанию, чтобы участники могут быстро найти информацию в списке?
Ключевое слово ASC пригодится в таких ситуациях; мы можем получить список фильмов, отсортированный по названию категории и названию фильма в возрастающем порядке.
Резюме
- Сортировка результатов запроса - это переупорядочивание строк, возвращаемых из набора результатов запроса, в порядке возрастания или убывания.
- Ключевое слово DESC в SQL используется для сортировки набора результатов запроса в порядке убывания.
- Ключевое слово ASC используется для сортировки набора результатов запроса в порядке возрастания.
- И DESC, и ASC работают вместе с ключевым словом ORDER BY. Их также можно использовать в сочетании с другими ключевыми словами, такими как предложение WHERE и LIMIT.
- Когда ничего явно не указано, для ORDER BY по умолчанию используется ASC.