РУКОВОДСТВО ПО РЕЛЯЦИОННОЙ СУБД DB2

ВЫБОРКА С УПОРЯДОЧЕНИЕМ


Выдать номера и состояния поставщиков, находящихся в Париже, в порядке убывания их состояния:

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



Содержание раздела