2.4. Выборка с упорядочением

Синтаксис фразы упорядочения был дан в п. 2.1. Простейший вариант этой фразы - упорядочение строк результата по значению одного из столбцов с указанием порядка сортировки или без такого указания. (По умолчанию строки будут сортироваться в порядке возрастания значений в указанном столбце.)

Например, выдать перечень продуктов и содержание в них основных веществ в порядке убывания содержания белка

Результат:
SELECT  Продукт, Белки, Жиры, Углев
FROM    Продукты
ORDER   BY Белки DESC;
ПродуктБелкиЖирыУглев
Судак190.80.0.
Говядина189.124.0.
Творог167.90.13.
Яйца127.115.7.
Кофе127.36.9.
Мука106.13.732.
. . .

При включении в список ORDER BY нескольких столбцов СУБД сортирует строки результата по значениям первого столбца списка пока не появится несколько строк с одинаковыми значениями данных в этом столбце. Такие строки сортируются по значениям следующего столбца из списка ORDER BY и т.д.

Например, выдать содержимое таблицы Блюда, отсортировав ее строки по видам блюд и основе:

Результат:
SELECT  *
FROM    Блюда
ORDER   BY В Основа;
БЛБлюдоВОснова Выход Труд
21Пудинг рисовыйГКрупа160.6
20Каша рисоваяГКрупа210.4
18СырникиГМолоко220.4
. . .
16ДраченаГЯйца180.4
28Крем творожныйДМолоко160.4
. . .
26Яблоки печеныеДФрукты160.3
7СметанаЗМолоко140.1
8ТворогЗМолоко140.2
2Салат мяснойЗМясо200.4
6Мясо с гарниромЗМясо250.3
1Салат летнийЗОвощи200.3
. . .

Кроме того, в список ORDER BY можно включать не только имя столбца, а его порядковую позицию в перечне SELECT. Благодаря этому возможно упорядочение результатов на основе вычисляемых столбцов, не имеющих имен.

Например, запрос

SELECT  Продукт, ((Белки+Углев)*4.1+Жиры*9.3)
FROM    Продукты
ORDER   BY 2;

позволит получить список продуктов, показанный на рис.2.2,в переупорядоченный по возрастанию значений калорийности список рис.2.2,а.