Изучаем sql


SELECT emp_id, fname, lname



Pdf көрінісі
бет103/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   99   100   101   102   103   104   105   106   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

SELECT emp_id, fname, lname
FROM employee
INTERSECT
SELECT cust_id, fname, lname
FROM individual;
Empty set (0.04 sec)
Первый запрос возвращает ID и имя каждого сотрудника, а второй – ID
и имя каждого клиента. Это абсолютно неперекрывающиеся множест
ва, поэтому пересечение двух этих множеств и дает пустое множество.


116
Глава 6. Работа с множествами
Второй шаг – выявить два запроса, 
действительно 
имеющих пере
крывающиеся данные, и затем применить оператор 
intersect
. Для это
го используем тот же запрос, что и для демонстрации разницы между
union
и 
union
all
, только на этот раз возьмем оператор 
intersect
:
SELECT emp_id
FROM employee
WHERE assigned_branch_id = 2
AND (title = 'Teller' OR title = 'Head Teller')
INTERSECT
SELECT DISTINCT open_emp_id
FROM account
WHERE open_branch_id = 2;
++
| emp_id |
++
| 10 |
++
1 row in set (0.01 sec)
Пересечение этих двух запросов дает сотрудника с ID равным 10, что
является единственным значением, имеющимся в результирующих
наборах обоих запросов.
Наряду с оператором 
intersect
, удаляющим все дублирующие строки
области перекрытия, спецификация SQL ANSI предлагает оператор 
in
tersect
all
, не удаляющий дубликаты. Единственный сервер БД, в на
стоящее время реализующий оператор 
intersect
all
, – DB2 Universal
Server компании IBM.
Оператор except
Спецификация SQL ANSI включает оператор 
except
(разность), пред
назначенный для выполнения операции разности. Опять же, к сожа
лению, MySQL версии 4.1 не реализует оператор 
except
, поэтому в дан
ном разделе действуют те же соглашения, что и в предыдущем.
При работе с Oracle Database вам понадобится использовать опе
ратор 
minus 
(минус), не совместимый со спецификацией ANSI.
Операция 
except
возвращает первую таблицу за вычетом всех перекры
тий со второй таблицей. Вот пример из предыдущего раздела, но с опе
ратором 
except
вместо 
intersect
:


Достарыңызбен бөлісу:
1   ...   99   100   101   102   103   104   105   106   ...   261




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

    Басты бет