Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Оператор exists

Gt; SUM(avail_balance) tot_balance _> FROM account | FROM account | Gt; FROM account | Gt; FROM account | Типы подзапросов | Несвязанные подзапросы | Gt; FROM employee | Оператор all | Оператор any | Подзапросы, возвращающие несколько столбцов |


Читайте также:
  1. Do оператор while (вираз);
  2. For (вираз1; вираз2; вираз3) оператор;
  3. If (вираз) оператор;
  4. Quot; Число, месяц, часы, минуты.Дежурство принял ДСП ……………..(подпись)Оператор ………………………..(подпись)Дежурство сдал ДСП ……………….(подпись)Оператор ………………………..(подпись)".
  5. Байланыс операторларының жедел-іздестіру қызметін жүзеге асыратын органдармен өзара
  6. Взаимодействия в группе операторов
  7. Властивості спряжених операторів.

 

Связанные подзапросы часто используются в условиях равенства и вхо_ ждения в диапазон, но самый распространенный оператор, применяе_ мый в условиях со связанными подзапросами, – это оператор exists (су_ ществует). Оператор exists применяется, если требуется показать, что связь есть, а количество связей при этом не имеет значения. Например, следующий запрос находит все счета, для которых транзакция была выполнена в определенный день, без учета количества транзакций:

 

SELECT a.account_id, a.product_cd, a.cust_id, a.avail_balance

 

FROM account a

 

WHERE EXISTS (SELECT 1

 

FROM transaction t

 

WHERE t.account_id = a.account_id

AND t.txn_date = '2005_01_22');

 

При использовании оператора exists подзапрос может возвращать ни одной, одну или много строк, а условие просто проверяет, возвращены ли в результате выполнения подзапроса строки (все равно сколько). Если взглянуть на блок select подзапроса, можно увидеть, что он со_ стоит из единственного литерала (1); для условия основного запроса имеет значение только число возвращенных строк, а что именно было возвращено подзапросом – не важно. Подзапрос может возвращать все, что вам вздумается, как показывает следующий пример:

 

SELECT a.account_id, a.product_cd, a.cust_id, a.avail_balance

 

FROM account a

 

WHERE EXISTS (SELECT t.txn_id, 'hello', 3.1415927

 

FROM transaction t

 

WHERE t.account_id = a.account_id

AND t.txn_date = '2005_01_22');

 

Но все же при использовании exists принято задавать select 1 или select *.

 

Для поиска подзапросов, не возвращающих строки, можно использо_ вать и оператор not exists:

 

mysql> SELECT a.account_id, a.product_cd, a.cust_id
_> FROM account a
_> WHERE NOT EXISTS (SELECT 1
_> FROM business b
_> WHERE b.cust_id = a.cust_id);

 

182 Глава 9. Подзапросы

 

+____________+____________+_________+ | account_id | product_cd | cust_id | +____________+____________+_________+

 

|   | CHK |   |
|   | SAV |   |
|   | CD |   |
|   | CHK |   |
|   | SAV |   |
|   | CHK |   |
|   | MM |   |
|   | CHK |   |
|   | SAV |   |
|   | MM |   |
|   | CHK |   |
|   | CHK |   |
|   | CD |   |
|   | CD |   |
|   | CHK |   |
|   | SAV |   |
|   | CHK |   |
|   | MM |   |
|   | CD |   |

 

+____________+____________+_________+ 19 rows in set (0.04 sec)

 

Этот запрос выявляет всех клиентов, ID которых нет в таблице busi_ ness, – окольный путь для поиска всех клиентов_физических лиц.

 


Дата добавления: 2015-08-17; просмотров: 50 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Gt; FROM customer c| Манипулирование данными с помощью связанных подзапросов

mybiblioteka.su - 2015-2024 год. (0.006 сек.)