3.3.4.4 Сортировка строк
Вы уже, наверное, заметили, что результаты, выдававшиеся запросами из
предыдущих примеров, выводились без какой-либо сортировки. Но ведь часто
разобраться в результатах легче, если они отсортированы. Для этого
используется выражение ORDER BY
.
Так выглядят даты рождения животных в отсортированном виде:
mysql> SELECT name, birth FROM pet ORDER BY birth;
+----------+------------+
| name | birth |
+----------+------------+
| Buffy | 1989-05-13 |
| Bowser | 1989-08-31 |
| Fang | 1990-08-27 |
| Fluffy | 1993-02-04 |
| Claws | 1994-03-17 |
| Slim | 1996-04-29 |
| Whistler | 1997-12-09 |
| Chirpy | 1998-09-11 |
| Puffball | 1999-03-30 |
+----------+------------+
Над столбцами с символьными значениями операция сортировки - как и все
другие операции сравнения - обычно проводится без учета регистра символов.
Это значит, что порядок расположения столбцов, совпадающих во всем, кроме
регистра символов, относительно друг друга будет не определен. Провести
сортировку с учетом регистра символов можно при помощи команды BINARY
:
ORDER BY BINARY(поле)
.
Для сортировки в обратном порядке к имени столбца следует добавить
ключевое слово DESC
(по убыванию):
mysql> SELECT name, birth FROM pet ORDER BY birth DESC;
+----------+------------+
| name | birth |
+----------+------------+
| Puffball | 1999-03-30 |
| Chirpy | 1998-09-11 |
| Whistler | 1997-12-09 |
| Slim | 1996-04-29 |
| Claws | 1994-03-17 |
| Fluffy | 1993-02-04 |
| Fang | 1990-08-27 |
| Bowser | 1989-08-31 |
| Buffy | 1989-05-13 |
+----------+------------+
Сортировку можно проводить по нескольким столбцам сразу. Например для
того, чтобы отсортировать таблицу сначала по типу животного, потом - по
дате рождения и затем - расположить наиболее молодых животных определенного
типа в начале списка, выполните следующий запрос:
mysql> SELECT name, species, birth FROM pet ORDER BY species, birth DESC;
+----------+---------+------------+
| name | species | birth |
+----------+---------+------------+
| Chirpy | bird | 1998-09-11 |
| Whistler | bird | 1997-12-09 |
| Claws | cat | 1994-03-17 |
| Fluffy | cat | 1993-02-04 |
| Fang | dog | 1990-08-27 |
| Bowser | dog | 1989-08-31 |
| Buffy | dog | 1989-05-13 |
| Puffball | hamster | 1999-03-30 |
| Slim | snake | 1996-04-29 |
+----------+---------+------------+
Обратите внимание: действие ключевого слова DESC
распространяется только
на тот столбец, имя которого располагается в запросе прямо перед этим
словом (в данном случае - birth
); значения поля species по-прежнему
отсортированы в возрастающем порядке.