ORDER BY-спецификация
Функция
Определение порядка сортировки выбранных данных.
Спецификация
::=
::=
::=
::=
::=
::=
::=
Синтаксические правила
-
Опция
SIBLINGS
применяется только к иерархическим запросам (см. пункт «Иерархический запрос»). -
Если
<запрос выборки>
содержит<ORDER BY-спецификацию>
и относится к одной таблице (обновляемому представлению), то результатом выполнения<запроса выборки>
будет обновляемая таблица с заданным порядком упорядочения. -
Каждое
<имя столбца>
в<ORDER BY-спецификации>
должно идентифицировать столбец<запроса выборки>
.select * from auto order by model; select distinct model, make from auto order by model desc; select distinct model, make, cylnders from auto order by make asc, cylnders desc;
-
<Значимое выражение>
может быть логическим выражением.create or replace table tst (i int, b boolean); insert into tst values (1,TRUE); insert into tst values (2,FALSE); insert into tst values (1,TRUE); insert into tst values (1,TRUE); select * from tst order by not b; I B - - |1|T| |1|T| |1|T| |2|F|
-
Именованный столбец может быть указан с помощью порядкового номера или по
<имени столбца>
. Неименованный столбец идентифицируется указанием:-
<беззнакового целого>
select distinct model, make, to_char(weight)|| ' кг.' "Вес" , year+1900 as "Год выпуска" from auto where rowid = 1 order by model, 3,4 ; MODEL MAKE Вес Год выпуска |MERCURY COMET GT V8 | FORD | 2900 кг. | 1971 |
-
или псевдонима
create or replace table t(i int); insert into t (i) values (1),(2),(1),(2),(3);, select i,sum(i) as "Сумма" from t group by i order by "Сумма"; I Сумма - ----- | 1| 2.0 | | 3| 3.0 | | 2| 4.0 |
-
-
Каждое
<беззнаковое целое>
должно быть больше 0 и не больше числа столбцов таблицы, порождаемой<запросом выборки>
. -
Если не указан вид сортировки, то по умолчанию выполняется сортировка по возрастанию.
-
<Порядок сортировки>
определяет относительную значимость упорядочиваемых столбцов. Сначала результат выборки упорядочивается по первому столбцу. Затем полученное упорядоченное множество повторно упорядочивается по второму столбцу и т.д.create table tab1 ( c1 varchar(10), c2 varchar(10)); insert into tab1 values ('23456', 'abcd'); insert into tab1 values ('13456', 'bacd'); insert into tab1 values ('32456', 'cdba'); insert into tab1 values ('13456', 'abcd'); select * from tab1; | 23456 | abcd | | 13456 | bacd | | 32456 | cdba | | 13456 | abcd |
select * from tab1 order by 1; | 13456 | bacd | | 13456 | abcd | | 23456 | abcd | | 32456 | cdba |
select * from tab1 order by 1,2; | 13456 | abcd | | 13456 | bacd | | 23456 | abcd | | 32456 | cdba |
-
Опция
<сортировка NULL-значений>
задаёт местоположение NULL-значений в отсортированном столбце:FIRST
– перед отсортированными данными,LAST
– в конце. Если опция не задана, по умолчанию используетсяLAST
.create or replace table test(c char(1), i int); insert into test (c, i) values('a', 1); insert into test (c, i) values('b', null); insert into test (c, i) values(null, 3); insert into test (c, i) values('d', null); insert into test (c, i) values(null, 5); select * from test order by c nulls first, i desc nulls last; |NULL | 5 | |NULL | 3 | |a | 1 | |b | NULL | |d | NULL |
-
Если опция
<сортировка NULL-значений>
не задана, NULL-значения сортируются так, как если бы они имели наибольшее значение в выборке. Т.е. в случае сортировки по возрастанию (неявной или с использованием спецификации ASC) по умолчанию используется вариант NULLS LAST, в случае сортировки по убыванию (спецификация DESC) по умолчанию используется вариант NULLS FIRST. -
Операция
ORDER BY
запрещена для столбцов типаBLOB
. -
Операция
ORDER BY
разрешена в подзапросах.