ВЫБОРКА С УПОРЯДОЧЕНИЕМ
Выдать номера и состояния поставщиков, находящихся в Париже, в порядке убывания их состояния:
SELECT НОМЕР_ПОСТАВЩИКА, СОСТОЯНИЕ
FROM S
WHERE ГОРОД = 'Париж'
ORDER BY СОСТОЯНИЕ DESC;
Результат:
НОМЕР_ПОСТАВЩИКА
СОСТОЯНИЕ
S3
S2
30
10
В общем случае не гарантируется, что результирующая таблица будет упорядочена каким-либо определенным образом. Здесь, однако, пользователь специфицировал, что результат перед тем, как он будет показан, должен быть организован в определенной последовательности. Упорядочение может быть специфицировано таким же образом, как в предложении CREATE INDEX (см. раздел 3.3):
имя—столбца [упорядочение] [,имя—столбца [упорядочение]]..., где «упорядочение», как и ранее, это ASC (возрастание) или DECS (убывание), и по умолчанию принимается ASC. Каждое «имя—столбца» должно идентифицировать некоторый столбец результирующей таблицы. Поэтому, например, следующее предложение недопустимо:
SELECT НОМЕР_ПОСТАВЩИКА
FROM S
ORDER BY ГОРОД;
Разрешается также идентифицировать столбцы во фразе ORDER BY (упорядочить по) «номерами—столбцов» вместо «имен—столбцов», где «номер—столбца» указывает порядковую позицию (слева направо) данного столбца в результирующей таблице запроса. Благодаря этому возможно упорядочение результата на основе «вычисляемых столбцов», которые не обладают именем. Например, упорядочить результат примера 4.2.3 по возрастанию номера детали в рамках возрастания веса в граммах:
SELECT НОМЕР_ДЕТАЛИ, ВЕС*454
FROM P
ORDER BY 2, НОМЕР_ДЕТАЛИ; [или ORDER BY 2,1;]
Здесь «2» ссылается на второй столбец результирующей таблицы.
Получаем:
НОМЕР_ДЕТАЛИ
Р1
Р5
Р4
Р2
РЗ
Р6
5448
5448
6356
7718
7718
8626