Читайте также:
|
|
Если в составном запросе больше двух запросов, использующих разные операторы работы с множествами, то для обеспечения желаемых ре_ зультатов следует продумать порядок расположения этих запросов в со_ ставном выражении. Рассмотрим следующее составное выражение из трех запросов:
mysql> | SELECT cust_id |
_> | FROM account |
_> | WHERE product_cd IN ('SAV', 'MM') |
_> | UNION ALL |
_> | SELECT a.cust_id |
_> | FROM account a INNER JOIN branch b |
_> | ON a.open_branch_id = b.branch_id |
_> | WHERE b.name = 'Woburn Branch' |
_> | UNION |
_> | SELECT cust_id |
_> | FROM account |
_> | WHERE avail_balance BETWEEN 500 AND 2500; |
+_________+ | cust_id | +_________+
| 1 |
| 2 |
| 3 |
| 4 |
| 8 |
| 9 |
| 7 |
| 11 |
| | 5 | |
+_________+ | |
rows in set (0.00 sec) |
Этот составной запрос включает три запроса, возвращающих набор не_ уникальных ID клиентов. Первые два запроса разделены оператором union all, а второй и третий – оператором union. Может показаться, что расположение операторов union и union all не играет роли, но на самом
120 Глава 6. Работа с множествами
деле разница есть. Вот тот же составной запрос, в котором эти операто_ ры поменялись местами:
mysql> SELECT cust_id
Дата добавления: 2015-08-17; просмотров: 58 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Правила операций с множествами | | | Gt; SELECT cust_id _> FROM account |