Читайте также:
|
|
FROM employee
WHERE assigned_branch_id = 2
AND (title = 'Teller' OR title = 'Head Teller')
EXCEPT
SELECT DISTINCT open_emp_id
FROM account
Операторы работы с множествами | |
WHERE open_branch_id = 2;
+________+ | emp_id | +________+
| 11 |
| | 12 | |
+________+
2 rows in set (0.01 sec)
В этом варианте запроса результирующий набор включает три строки из результирующего набора первого запроса минус сотрудник с ID, равным 10, который присутствует в результирующих наборах обоих запросов. В спецификации SQL ANSI также описан оператор except all, но опять же он реализован только в DB2 Universal Server IBM.
В операторе except all есть небольшая хитрость. Вот пример, показы_ вающий, как обрабатываются дублирующие данные. Скажем, есть два множества данных, имеющих следующий вид:
Множество A
+________+ | emp_id | +________+
| 10 |
| 11 |
| 12 |
| 10 |
| | 10 | |
+________+
Множество B
+________+ | emp_id | +________+
| 10 |
| | 10 | |
+________+
В результате операции A except B получаем следующее:
+________+ | emp_id | +________+
| 11 |
| | 12 | |
+________+
Если изменить операцию и применить A except all B, увидим следующее:
+________+ | emp_id | +________+
| 10 |
| | 11 | |
Глава 6. Работа с множествами | |
| | 12 | |
+________+
Следовательно, разница между этими двумя операциями в том, что ex_ cept удаляет все экземпляры дублирующихся данных из множества А, тогда как except all удаляет из множества А только один экземпляр дуб_ ликата данных для каждого экземпляра дубликата данных множества В.
Дата добавления: 2015-08-17; просмотров: 54 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Оператор except | | | Правила операций с множествами |