UNION И УСТРАНЕНИЕ ДУБЛИКАТОВ
UNION будет автоматически исключать
дубликаты строк из вывода. Это нечто несвойственное для SQL, так как одиночные запросы обычно содержат
DISTINCT
чтобы устранять дубликаты. Например запрос, чей вывод показывается в Рисунке 14.2,
SELECT snum, city FROM Customers;
имеет двойную комбинацию значений ( snum=1001, city=London ), потому что мы не указали, чтобы SQL
устранил дубликаты.
Однако, если мы используем
| cnum |
city |
| 1001 |
London |
| 1003 |
Rome |
| 1002 |
San Jose |
| 1002 |
Berlin |
| 1001 |
London |
| 1004 |
Rome |
| 1007 |
San Jose |
Рисунок 14.2: Одиночный запрос с дублированным выводом
UNION в комбинации этого запроса с ему подобным в таблице Продавцов, то эта избыточная комбинация будет
устранена.
Рисунок 14.3 показывает вывод следующего запроса.
SELECT snum, city FROM Customers UNION SELECT snum, city FROM
Salespeople.;
| 1001 |
London |
| 1002 |
San Jose |
| 1007 |
San Jose |
| 1007 |
New York |
| 1003 |
Rome |
| 1001 |
London |
| 1003 |
Rome |
1002 |
Barcelona |
| 1007 |
San Jose |
Рисунок 14.3: UNION устраняет двойной вывод
Вы можете получить нечто
похожее ( в некоторых программах SQL, используя UNION ALL вместо просто UNION, наподобии этого:
SELECT snum, city
FROM Customers UNION ALL SELECT snum, city FROM Salespeople;