Комбинированные запросы
- Что такое комбинированные запросы
- Правила применения запросов UNION
- Включение или исключение повторяющихся строк
- Сортировка результатов комбинированных запросов
Включение или исключение повторяющихся строк
Возвратимся к одному из предыдущих разделов "Использование оператора UNION" и рассмотрим использованные в нем простые операторы SELECT. Вы можете заметить, что, когда они выполняются отдельно, первый оператор SELECT возвращает три строки, второй — две. Однако когда эти два оператора SELECT комбинируются с UNION, возвращаются только четыре строки, а не пять.
Запрос UNION автоматически удаляет все повторяющиеся строки из набора результатов запроса (иными словами, он ведет себя точно так же, как вели бы себя несколько предложений WHERE в одном операторе SELECT). Поэтому здесь присутствует запись о клиенте Fun4All из штата Индиана — эта строка была возвращена обоими операторами SELECT. Когда же использовался запрос UNION, повторяющаяся строка была удалена.
Таково поведение запроса UNION по умолчанию, но при желании вы можете изменить его. Если бы требовалось, чтобы возвращались все вхождения соответствий, вам следовало бы использовать UNION ALL вместо оператора UNION.
Рассмотрим следующий пример:
FROM Customers
WHERE cust_state IN ('IL•,'IN','MI')
UNION ALL
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';
cust_name cust_contact cust_email
--------------- -------------------- --------------------------------
Village Toys John Smith sales@villagetoys.com
Fun4All Jim Jones jjones@fun4all.com
The Toy Store Kim Howard NULL
Fun4All Jim Jones jjones@fun4all.com
Fun4All Denise L.Stephens dstephens@fun4all.com
При использовании запроса UNION ALL СУБД не удаляет дубликаты. Поэтому в предыдущем примере возвращено пять строк, одна из них повторяется дважды.



