Изучаем sql



Pdf көрінісі
бет153/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   149   150   151   152   153   154   155   156   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

> FROM branch
> WHERE name IN ('Headquarters', 'Quincy Branch');
++++
| branch_id | name | city |
++++
| 1 | Headquarters | Waltham |
| 3 | Quincy Branch | Quincy |
++++
2 rows in set (0.03 sec)
В левой части условия – выражение (столбец 
name
), а в правой части –
набор строк. Оператор 
in
проверяет, нет ли в столбце 
name
одной из за
данных строк. Если есть, условие выполнено, и строка добавляется в ре
зультирующий набор. Такие же результаты можно получить и с помо
щью двух условий равенства:
mysql> 
SELECT branch_id, name, city
> FROM branch
> WHERE name = 'Headquarters' OR name = 'Quincy Branch';
++++
| branch_id | name | city |
++++
| 1 | Headquarters | Waltham |
| 3 | Quincy Branch | Quincy |
++++
2 rows in set (0.01 sec)
Для набора только из двух выражений такой подход кажется рацио
нальным, но если в наборе десятки (или сотни, тысячи и т. д.) значе
ний, очевидный выбор – одно условие с оператором 
in
.
Даже иногда создавая вручную наборы строк, дат или чисел для ис
пользования в одной из частей условия, вы все же предпочтете форми
ровать набор при выполнении запроса посредством подзапроса, воз
вращающего одну или более строк. Следующий запрос использует опе
ратор 
in
и подзапрос в правой части условия фильтрации для того, что
бы выявить руководящий состав банка:
mysql> 
SELECT emp_id, fname, lname, title
> FROM employee
> WHERE emp_id IN (SELECT superior_emp_id
> FROM employee);


Несвязанные подзапросы
173
+++++
| emp_id | fname | lname | title |
+++++
| 1 | Michael | Smith | President |
| 3 | Robert | Tyler | Treasurer |
| 4 | Susan | Hawthorne | Operations Manager |
| 6 | Helen | Fleming | Head Teller |
| 10 | Paula | Roberts | Head Teller |
| 13 | John | Blake | Head Teller |
| 16 | Theresa | Markham | Head Teller |
+++++
7 rows in set (0.01 sec)
Подзапрос возвращает ID всех сотрудников, имеющих когото в под
чинении, а основной запрос извлекает для этих сотрудников четыре
столбца таблицы 
employee
. Вот результаты подзапроса:
mysql> 


Достарыңызбен бөлісу:
1   ...   149   150   151   152   153   154   155   156   ...   261




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

    Басты бет