Сортировка результатов запроса
Фраза ORDER BY…, необходимая для представления результатов выборки в отсортированном виде, обязательно должна быть последней в команде SELECT, поскольку сортировка результатов всегда завершает выполнение запроса на выборку.
После ключевых слов ORDER BY следует указание, как именно требуется отсортировать результаты. Сортировка божет быть выполнена по одному или нескольким столбцам. В последнем случае сначала выполняется сортировка по первому из столбцов, указанных в списке, в случае наличия одинаковых значений, строки с одинаковыми значениями сортируются по второму из столбцов и т.д.
Сортировку можно выполнять по столбцам различных типов, исключая типы больших объектов (BLOB, CLOB). Сортировка по текстовым столбцам выполняется в лексикографическом (алфавитном) порядке, сортировка по столбцам даты и времени – в хронологическом порядке.
По умолчанию значения сортируются по возрастанию (точнее, по неубыванию), но можно установить порядок сортировки «по убыванию» с помощью ключевого слова DESC[ENDING]. Можно и явно указать сортировку по возрастанию с помощью ключеого слова ASC[ENDING], но это никак не отразится на результате. Если сортировка выполняется сразу по нескольким столбцам, DESC необходимо указывать для каждого столбца в списке, для которого необходима сортировка по убыванию.
Например, запрос
SELECT name_st FROM students ORDER BY name_st
возвратит список студентов в алфавитном порядке, а запрос
SELECT name_st FROM students ORDER BY name_st, born
не только отсортирует список в алфавитном порядке, но и расставит однофамильцев в соответствии с их возрастом (первым будет самый старший, т.к. у него самая меньшая дата рождения). Если мы хотим расставить однофамильцев в порядке убывания даты рождения, следует изменить текст так:
SELECT name_st FROM students ORDER BY name_st, born DESC
Если и сортировать фамилии требуется в порядке, обратном алфавитному, текст будет выглядеть так:
SELECT name_st FROM students ORDER BY name_st DESC, born DESC
Из приведенных примеров видно, что сортировать результаты можно не только по столбцам, которые отбираются в запросе, но и по любым другим столбцам таблицы, на которой основан запрос. Если столбец сортировки уже указан в списке отбирающихся в запросе столбцов, во фразе ORDER BY можно указать его порядковый номер в списке. Например, запрос
SELECT name_st, born FROM students ORDER BY 1
отсортирует результаты по первому столбцу в списке (это столбец name_st). Такая дополнительная возможность позволяет немного сократить текст запроса, но никак не влияет на его результаты.
В списке ORDER BY в общем случае можно указывать произвольные выражения, в этом случае сортировка будет выполняться по значениям данного выражения.
Дата добавления: 2015-08-26; просмотров: 872;