Пропозиція ORDER BY поради та хитрощі програмування - SQL програмування
Зміст
При використанні операторів для роботи з наборами даних (UNION, ЕХСЕРТ, INTERSECT) пропозиція ORDER Y може міститися тільки в останньому запиті. Не слід використовувати пропозицію ORDER BY у підзапитах будь-якого типу.
Декілька функціональностей, що підтримуються в SQL92, у стандарті SQL 2003 було видалено. Ви не повинні використовувати таке. Посилання на псевдоніми таблиць
Наприклад, пропозицію ORDER BY e.emp_id слід замінити на пропозицію ORDER BY empid. Якщо в імені стовпця є двозначність, використовуйте псевдонім. Посилання на порядкове положення
Використовуйте явні псевдоніми стовпців.
Ви можете проводити сортування не лише за стовпцями, але також за виразами, які використовують імена стовпців і навіть константи.
При сортуванні за виразами, взятими зі списку інструкції SELECT, потрібно використовувати псевдоніми, щоб спростити читання посилань у реченні ORDER BY для сортування.
Платформа DB2 підтримує синтаксис ANSI, крім опції COLLATE. Крім того, в цій платформі є розширення ORDER OF.
ORDER OF имя_таблицы
Примушує платформу DB2 сортувати рядки батьківської таблиці так, як вони відсортовані у підзапиті. Щоб краще зрозуміти цю ідею, згадайте, що DB2 підтримує сортування на рівні підзапиту. Проте відсортований підзапит не повертатиме відсортований результуючий набір, якщо не використовується пропозиція ORDER BY ORDER OF. Параметр имя_таблщи повинен бути ім'я таблиці, яку посилається батьківський запит. Приклад:
Платформа DB2, як і раніше, підтримує функції SQL92, такі як сортування за порядковим положенням. За замовчуванням DB2вважає значення NULL найбільшими.
Платформа DB2 не підтримує використання пропозиції ORDER BY для стовпців таких типів даних: LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB, BLOB та DATALINK. Також DB2 не підтримує сортування структурних типів.
Платформа MySQL підтримує стандарт ANSI, крім пропозиції COLLATE.
Не слід намагатися використовувати в реченні ORDER BY стовпці з типом BLOB, оскільки при такому сортуванні використовуються тільки перші байти, кількість яких визначається параметром max_sort_length. За умовчанням MySQL ставить порожні значення в самий початок при сортуванні за зростанням і в самий кінець - при сортуванні за спаданням.
Платформа Oracle підтримує стандарт ANSI, крім пропозиції COLLATE. Також підтримуються пропозиції SIBLINGS та NULLS (FIRST LAST). Синтаксис пропозиції ORDER В До Oracle наступний.
ORDER [SIBLINGS] BY
Специфічні для Oracle ключові слова такі.
ORDER [SIBLINGS] BY для_сортування
Результуючий набір запиту сортується в порядку, що визначається виразом для сортування. Вираз для сортування може являти собою ім'я стовпця, псевдонім, ціле число, що вказує на порядкове положення стовпця, або інший вираз (наприклад, зарплата * 1.02). Пропозиція ORDER SIBLINGS BY змушує Oracle зберігати сортування, що визначається ієрархічним запитом (CONNECT BY), а вираз_для_сортування застосовувати для сортування рівноправних членів ієрархії.
NULLS (FIRST LAST>
Пропозиції NULLS FIRST та NULLS LAST показують, що записи, що містять значення NULL, повинні при сортуванні ставитися першими або останніми відповідно. За замовчуванням Oracle ставить порожні значення останніми присортування за зростанням і першими - при сортуванні за спаданням.
Ви можете імітувати функціональність пропозиції COLLATE в одному сеансі, використовуючи функцію NLSSORT із параметром NLSSORT. Ви можете імітувати функціональність пропозиції COLLATE для всіх сеансів на сервері явно, використовуючи ініціалізаційний параметр NLSSORT, або неявно, використовуючи ініціалізаційний параметр NLSJLANGUAGE.
Платформа Oracle продовжує підтримувати виведені з використання функції SQL92, такі, як сортування за порядковим розташуванням. Не застосовуйте в пропозиції ORDER BY стовпці LOB, вкладені таблиці або стовпці VARRAY.
PostgreSQL
Платформа PostgreSQL підтримує стандарт ANSI, крім пропозиції COLLATE. Також підтримується розширення USING.
USING оператор
Вказується конкретний оператор порівняння. Так, ви можете проводити сортування за операторами >, =, .
Платформа PostgreSQL при сортуванні вважає порожні значення (NULL) найбільшими. Отже, ці значення будуть знаходитися в самому кінці при сортуванні за зростанням і на самому початку - при сортуванні за спаданням.
SQL Server
Платформа SQL Server продовжує підтримувати функції SQL92, що виходять з використання, в тому числі можливість вказувати стовпці для пропозиції ORDER BY за їх порядковим номером.
За промовчанням SQL Server вважає порожні значення більшими, ніж усі інші.
Не слід використовувати у параметрі category_subscribe в SQL Server стовпчики TEXT. IMAGE та NTEXT.
Додаткова інформація на тему
Деякі поради щодо використання пропозиції JOIN у базах даних на різних платформах
Додаткові секрети використання пропозиції ORDER BY у базах даних наплатформі MySQL
Додаткові секрети використання пропозиції ORDER BY у базах даних на платформі Oracle
Деякі поради використання оператора LIKE у базах даних на різних платформах