Вход/Регистрация
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
вернуться

Борри Хелен

Шрифт:

Разделенный запятыми <список-элементов-сортировки> определяет вертикальный порядок сортировки строк. Порядок сортировки по каждому элементу сортировки может быть возрастающим (ASC) или убывающим (DESC). Возрастающий порядок является порядком по умолчанию и не обязательно должен быть указан.

Firebird 1.5 поддерживает размещение значений NULL, если присутствуют, в элементе сортировки. Значение по умолчанию, NULLS LAST, означает, что строки NULL будут помещены в конец списка. Задавайте NULLS FIRST для размещения NULL перед всеми другими значениями.

Когда присутствует несколько элементов сортировки, то горизонтальный порядок элементов в предложении является значимым - сортировка выполняется слева направо.

Столбцы

Элементами сортировки обычно являются столбцы. Индексированные столбцы сортируются много быстрее, чем неиндексированные. Если сортировка использует множество столбцов в непрерывной последовательности слева направо, то составной индекс, созданный из таких сортируемых элементов в той же последовательности слева направо с соответствующим направлением сортировки (ASC/DESC), может резко повысить скорость сортировки.

В запросах UNION и GROUP BY столбец, используемый для сортировки, должен присутствовать в выходном списке. В других запросах невыводимые столбцы и (в версии 1.5) выражения, содержащие невыводимые столбцы, допустимы для критерия упорядочения.

Оператор в примере 23.1 показывает сортировку по столбцам в простейшей форме.

Пример 23.1. Простейшая сортировка по столбцам

SELECT COLA, COLB, COLC, COLD

FROM TABLEA

ORDER BY COLA, COLD;

Использование алиасов таблиц

При спецификации упорядоченного набора, который использует соединение или коррелированные подзапросы, вы должны указывать полные идентификаторы для всех элементов сортировки, являющихся столбцами базы данных, или обращаться к столбцам базы данных, используя идентификаторы таблиц или алиасы, которые были заданы в предложениях FROM и JOIN, как показано в примере 23.2.

Пример 23.2, Алиасы таблиц в предложении упорядочения

SELECT A.COLA, A.COLB, B.COL2, B.C0L3

FROM TABLEA А

JOIN TABLEB В ON A.COLA = B.COL1

WHERE A.COLX = 'Sold'

ORDER BY A.COLA, B.COL3;

Выражения

В Firebird 1.5 и выше правильные выражения допустимы в качестве элементов сортировки, даже если выражение не выводится в виде выходного столбца. Вы можете сортировать наборы по выражениям внутренних и внешних функций или скалярным значениям коррелированных подзапросов (пример 23.3). Если столбец выражения, по которому вы хотите выполнять сортировку, присутствует в выходном списке, вы не можете использовать его имя алиаса в качестве элемента упорядочения. или повторите выражение в предложении ORDER BY, или используйте порядковый номер столбца (см. разд. "Порядковые номера").

Пример 23.3. Упорядочение по полю выражения

SELECT EMP_NO || '-' || SUBSTRING (LAST_NAME FROM 1 FOR 3) AS NAMECODE

FROM EMPLOYEE

ORDER BY EMP_NO || '-' || SUBSTRING (LAST_NAME FROM 1 FOR 3);

Альтернативный способ - замена выражения в предложении упорядочения на порядковый номер поля выражения:

SELECT EMP_NO || '-' || SUBSTRING (LAST_NAME FROM 1 FOR 3) AS NAMECODE

FROM EMPLOYEE

ORDER BY 1;

Если вам нужна сортировка по выражению в версии 1.0.x, необходимо включить выражение в выходной список и использовать его порядковый номер в предложении

ORDER BY.

Сортировка по выражениям процедур или функций

Сортировка по значениям, возвращаемым обычными или внешними функциями или хранимыми процедурами, похожа на другие виды сортировки: она будет выполняться в соответствии с обычными правилами для типов данных возвращаемых значений. Вы ответственны за указание сортировки только по значениям, которые соответствуют некоторой логической последовательности. В качестве примера неправильной последовательности рассмотрим следующее:

. . .

ORDER BY CAST (SALES_DATE AS VARCHAR(24))

Строки будут упорядочены в алфавитно-цифровой последовательности символов без соответствия датам, с которыми оперирует это выражение.

! ! !

ВНИМАНИЕ! При использовании выражений в качестве критериев упорядочения помните о значительном расходовании ресурсов на сервере при дублировании вычисления выражения для каждой найденной строки. Влияние этого будет в лучшем случае непредсказуемым. Умеренно используйте в этом типе операции количество наборов.

  • Читать дальше
  • 1
  • ...
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: