Показаны сообщения с ярлыком Команда SELECT Раздел ORDER BY. Показать все сообщения
Показаны сообщения с ярлыком Команда SELECT Раздел ORDER BY. Показать все сообщения

пятница, 11 января 2019 г.

Команда SELECT Раздел ORDER BY

Раздел ORDER BY

Фраза ORDER BY используется для того, чтобы упорядочить строки, извлекаемые запросом.
В предложении ORDER BY SQL можно задавать несколько выражений. Сначала сортируются строки, основываясь на их значениях для первого выражения. Строки с одним и тем же значением для первого выражения затем сортируются по второму выражению и так далее. NULL-значения располагает после всех других при упорядочивании в порядке возрастания и перед всеми другими при сортировке в убывающем порядке.
Вместо имени столбца можно указать его позицию для сокращения записи длинного выражения.
Кроме того, при составлении сложных запросов, содержащих множественные операторы UNION, INTERSECT, MINUS, или UNION ALL, в предложении ORDER BY лучше использовать позиции, чем непосредственно сами выражения. Предложение ORDER BYможет появляться только в последнем составляющем запросе и сортирует строки, полученные всем составным запросом в целом.
Предложение ORDER BY подчинено следующим ограничениям:
  • Если в утверждении SELECT используются и оператор ORDER BY и оператор DISTINCT, то  предложение ORDER BY не может ссылаться на столбцы, не упоминаемые в списке выбора выбираемых столбцов.
  • Предложение ORDER  BY не может появляться в подзапросах внутри других утверждений.

ORDER BY в обратном порядке

Выбрать из EMP записи по всем продавцам, и упорядочить результаты по размерам комиссионных в обратном порядке (убывающем порядке):
SELECT * FROM emp WHERE job = ‘SALESMAN’ ORDER BY comm DESC;

ORDER BY в возрастающем порядке

Выбрать из EMP записи по всем сотрудникам, и упорядочить результаты по размерам комиссионных в возрастающем порядке:
SELECT * FROM emp WHERE job = ‘SALESMAN’ ORDER BY comm ASC;

ORDER BY в возрастающем и убывающем порядке

Выбрать из EMP записи по служащим, упорядоченные сначала по возрастанию номера отдела а затем по убыванию размера оклада:
SELECT ename, deptno, sal FROM emp ORDER BY deptno ASC, sal DESC;