Изучаем sql



Pdf көрінісі
бет159/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   155   156   157   158   159   160   161   162   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

Связанные подзапросы
Все приведенные до сих пор запросы не зависели от своих содержащих
выражений, т. е. могли выполняться самостоятельно и представлять
свои результаты для проверки. 
Связанный подзапрос 
(
correlated sub
query
), напротив, 
зависит 
от содержащего выражения, из которого он
ссылается на один или более столбцов. В отличие от несвязанного под
запроса, который выполняется непосредственно перед выполнением
содержащего выражения, связанный подзапрос выполняется по разу
для каждой строкикандидата (это строки, которые предположитель
но могут быть включены в окончательные результаты). Например,
следующий запрос использует связанный подзапрос для подсчета ко
личества счетов у каждого клиента. Затем основной запрос выбирает
тех клиентов, у которых ровно по два счета:
mysql> 
SELECT c.cust_id, c.cust_type_cd, c.city
> FROM customer c
> WHERE 2 = (SELECT COUNT(*)
> FROM account a
> WHERE a.cust_id = c.cust_id);
++++
| cust_id | cust_type_cd | city |
++++
| 2 | I | Woburn |
| 3 | I | Quincy |
| 6 | I | Waltham |
| 8 | I | Salem |
| 10 | B | Salem |
++++
5 rows in set (0.01 sec)
Ссылка на 
c.cust_id
в самом конце подзапроса – это то, что делает этот
подзапрос связанным. Чтобы подзапрос мог выполняться, основной
запрос должен поставлять значения для 
c.cust_id
. В данном случае ос
новной запрос извлекает из таблицы 
customer
все 13 строк и выполняет
по одному подзапросу для всех клиентов, передавая в него соответст


180
Глава 9. Подзапросы
вующий ID клиента при каждом выполнении. Если подзапрос возвра
щает значение 
2
, условие фильтрации выполняется и строка добавля
ется в результирующий набор.
Помимо условий равенства связанные подзапросы можно применять
в условиях других типов, таких как условие вхождения в диапазон,
проиллюстрированное ниже:
mysql> 


Достарыңызбен бөлісу:
1   ...   155   156   157   158   159   160   161   162   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет