ЗАКАЗАТЬ ПО в MySQL: Запрос DESC и ASC с ПРИМЕРОМ
Сортировка результатов
При использовании команды SELECT результаты возвращались в том же порядке, в котором записи были добавлены в базу данных. Это порядок сортировки по умолчанию. В этом разделе мы рассмотрим, как можно сортировать результаты запроса. Сортировка — это просто переупорядочение результатов запроса определенным образом. Сортировка может выполняться по одному столбцу или по нескольким столбцам. Это можно сделать с числами, строками, а также типами данных даты.
Что такое ORDER BY в MySQL?
MySQL СОРТИРОВАТЬ ПО используется вместе с запросом SELECT для упорядоченной сортировки данных. MySQL Предложение ORDER BY используется для сортировки наборов результатов запроса в порядке возрастания или убывания.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
ВОТ
- Оператор SELECT... " это обычный запрос выбора
- "| " представляет альтернативы
- «[ГДЕ условие | ГРУППИРОВАТЬ ПО `field_name(s)` ИМЕЮЩЕЕ условие» — это необязательное условие, используемое для фильтрации наборов результатов запроса.
- "СОРТИРОВАТЬ ПО" выполняет сортировку набора результатов запроса
- «[АСК | DESC]” — это ключевое слово, используемое для сортировки наборов результатов в порядке возрастания или убывания. Примечание ASC используется по умолчанию.
- ВЫБЕРИТЕ {имя поля | *} FROM tableName(s) — это оператор, содержащий поля и таблицы, из которых можно получить набор результатов.
- [ГДЕ условие] не является обязательным, но может использоваться для фильтрации данных в соответствии с заданным условием.
- СОРТИРОВАТЬ ПО имя(я) поля является обязательным и представляет собой поле, по которому должна выполняться сортировка. MySQL Ключевое слово DESC указывает, что сортировка должна осуществляться в порядке убывания.
- [ОГРАНИЧЕНИЕ] не является обязательным, но может использоваться для ограничения количества результатов, возвращаемых из набора результатов запроса.
Что такое ключевые слова DESC и ASC?
Он используется для сортировки результатов запроса сверху вниз. | Он используется для сортировки результатов запроса снизу вверх. |
При работе с типами данных даты самая ранняя дата отображается вверху списка. | . При работе с типами дат самая поздняя дата отображается вверху списка. |
При работе с числовыми типами данных наименьшие значения отображаются вверху списка. | При работе с числовыми типами данных самые высокие значения отображаются вверху набора результатов запроса. |
При работе со строковыми типами данных набор результатов запроса сортируется от тех, которые начинаются с буквы 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]
ВОТ
Примеры:
Давайте теперь посмотрим на практический пример –
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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 Workbench с myflixdb дает нам следующие результаты, показанные ниже.
Тот же запрос в порядке возрастания
ВЫБРАТЬ * ИЗ участников СОРТИРОВАТЬ ПО дате_рождения ASC
Примечание. Значения NULL означают отсутствие значений (не ноль или пустую строку). Обратите внимание на то, как они были отсортированы.
Больше примеров
Давайте рассмотрим следующую сортировку SQL по сценарию, в котором перечислены все записи-члены.
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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
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 | rm@tstreet.com |
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 отсортировал набор результатов запроса в порядке возрастания.
Давайте теперь посмотрим на пример, который делает сортировка по двум столбцам; первый из них отсортированный in по возрастанию по умолчанию, а второй столбец отсортированный in в порядке убывания.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Выполнение приведенного выше сценария в MySQL Workbench против myflixdb дает следующие результаты.
Столбец пола по умолчанию отсортирован по возрастанию, а столбец даты рождения явно отсортирован по убыванию.
Почему мы можем использовать DESC и ASC?
Предположим, мы хотим распечатать историю платежей для участника видеотеки, чтобы помочь ответить на вопросы на стойке регистрации, не было бы более логично напечатать платежи в нисходящем хронологическом порядке, начиная с недавнего платежа и заканчивая более ранним платежом?
DESC в SQL — это ключевое слово, которое может оказаться полезным в таких ситуациях. Мы можем написать запрос, который сортирует список по убыванию даты платежа.
Предположим, отдел маркетинга хочет получить список фильмов по категориям, который участники могут использовать, чтобы решить, какие фильмы доступны в библиотеке при аренде фильмов, не было бы логичнее отсортировать названия и названия категорий фильмов по возрастанию, чтобы участники могут быстро найти информацию в списке?
Ключевое слово ASC пригодится в таких ситуациях; мы можем получить список фильмов, отсортированный по названию категории и названию фильма в порядке возрастания.
Резюме
- Сортировка результатов запроса — это переупорядочение строк, возвращаемых из набора результатов запроса, в порядке возрастания или убывания.
- Ключевое слово DESC в SQL используется для сортировки набора результатов запроса в порядке убывания.
- Ключевое слово ASC используется для сортировки набора результатов запроса в порядке возрастания.
- И DESC, и ASC работают вместе с ключевым словом ORDER BY. Их также можно использовать в сочетании с другими ключевыми словами, такими как Предложение WHERE и ПРЕДЕЛ
- Если ничего не указано явно, по умолчанию для ORDER BY используется ASC.