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;