Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Комбинированные запросы

Сортировка результатов комбинированных запросов

      Результат применения оператора SELECT сортируется с помощью предложения ORDER BY. При комбинировании запросов посредством UNION только одно предложение ORDER может быть использовано, и оно должно появиться после заключительного оператора SELECT. Практически не имеет смысла сортировать часть набора результатов одним способом, а часть — другим, поэтому несколько предложений ORDER BY применять не разрешается.

     В следующем примере сортируются результаты, полученные предыдущим запросом UNION:

SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN (4L1,'IN1,'MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All'
ORDER BY cust_name, cust_contact; 



cust_name       cust_contact          cust_email
-------------   -------------------   -----------------------------
Fun4All         Denise L.Stephens     dstephens@fun4all.com
Fun4All         Jim Jones             jjones@fun4all.com
The Toy Store   Kim Howard            NULL
Village Toys    John Smith            sales@villagetoys.com

        Этот запрос UNION использует одно предложение ORDER BY после заключительного оператора SELECT.

        Несмотря на то что ORDER BY является частью только последнего оператора SELECT, на самом деле СУБД будет использовать его для сортировки всех результатов, возвращенных всеми операторами SELECT.

Другие типы запроса на соединение

Некоторые СУБД поддерживают два дополнительных запроса типа union. Оператор except (иногда называемый minus) может быть использован только для чтения строк, которые существуют в первой таблице, но не во второй, а оператор intersect можно использовать для чтения строк, которые имеются в обеих таблицах. Однако на практике такие запросы union используются редко, поскольку те же самые результаты могут быть получены посредством объединений.