Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

UNION и устранение дубликатов

UNION будет автоматически исключать дубликаты строк из вывода. Это нечто несвойственное для SQL, так как одиночные запросы обычно содер жат DISTINCT чтобы устранять дубликаты. Например запрос, чей вывод показывается в Рисунке 14.2,

SELECT snum, city FROM Customers;

имеет двойную комбинацию значений ( snum=1001, city=London ), потому что мы не указали, чтобы SQL устранил дубликаты. Однако, если мы используем

SQL Execution Log

SELECT snum, city

FROM Customers;

snum 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.;

SQL Execution Log

SELECT snum, city

FROM Customers;

   
1001 London
1002 Rome
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;