Читайте также:
|
|
Результаты выполнения оператора SELECT сортируются с помощью предложения ORDER BY. При комбинировании запросов с помощью UNION только одно предложение ORDER BY может быть использовано, и оно должно быть проставлено в последнем операторе SELECT. Действительно, на практике нет особого смысла часть результатов сортировать в одном порядке, а другую часть - в другом. Поэтому несколько предложений ORDER BY применять не разрешается.
Объединение “по вертикали” или операция UNION
На самом деле в английском языке слов JOIN больше соответствует русскому слову соединение, а слово объединение, в свою очередь, ближе к английскому UNION. Я надеюсь, что не смутил читателя тем, что на предыдущих этапах везде использовал слово “объединение”. Разница между операциями JOIN и UNION в SQL принципиальная. Лучше сказать, что обе эти операции ортогональны друг другу. Если JOIN всячески объединяла данные в ширину или “по горизонтали”: объединяла поля из разных таблиц (колонки из разных запросов) в один запрос, то UNION напротив: рост в ширину не приемлет и объединяет именно результаты различных запросов одинакового формата. Другими словами - объединяет данные “по вертикали”.
Пример простейшего объединения (псевдоним NAME здесь необязателен):
SELECT S_NAME AS NAME FROM D_STAFF UNION SELECT P_NAME AS NAME FROM D_PROFILE
Объединение UNION в SQL запросе.
Естественно, что можно накладывать любые критерии отбора на объединяемые запросы:
SELECT S_NAME AS NAME FROM D_STAFFWHERE S_NAME LIKE '%анд%'UNIONSELECT P_NAME AS NAME FROM D_PROFILEWHERE P_NAME LIKE 'фин%'
Объединение UNION с дополнительными условиями.
Ну и, наконец, обещанный на предыдущем шаге эквивалент FULL JOIN. Запрос построен на основании того факты, что пустые значения в результатах запросов LEFT JOIN и RIGH JOIN можно идентифицировать сравнением вида IS NULL. Противоположное выражение будет выглядеть как IS NOT NULL. Из примера, думаю, все станет ясно.
Реализация операции вычитания с помощью нескольких объединений.
По умолчанию результат UNION содержит только уникальные строки. Ключевое слово ALL заставляет в отчет включать все, в том числе и повторяющиеся строки. Кстати, первые две части запроса соответствуют как раз результату операции MINUS:
LEFT JOIN MINUS INNER JOIN и RIGHT JOIN MINUS INNER JOIN.В языке SQL ключевое слово UNION применяется для объединения результатов двух SQL-запросов в единую таблицу, состоящую из схожих строк. Оба запроса должны возвращать одинаковое число столбцов и совместимые типы данных в соответствующих столбцах. Данный оператор был описан уже в самом первом стандарте SQL — SQL/89.
Синтаксис
Оператор указывается между запросами. В упрощенном виде это выглядит следующим образом:
<запрос1> UNION [ ALL ]<запрос2> UNION [ ALL ]<запрос3>.....;По умолчанию любые дублирующие записи автоматически скрываются, если не использовано выражение UNION ALL.
Необходимо отметить, что UNION сам по себе не гарантирует порядок строк. Строки из второго запроса могут оказаться в начале, в конце или вообще перемешаться со строками из первого запроса. В случаях, когда требуется определенный порядок, необходимо использовать выражение ORDER BY.
Дата добавления: 2015-10-28; просмотров: 81 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Включение или выключение повторяющихся строк | | | Подготовка к запуску |