UNION и устранение дубликатов
UNION будет автоматически исключать дубликаты строк из вывода. Это нечто несвойственное для SQL, так как одиночные запросы обычно содержат DISTINCT, чтобы устранять дубликаты. Например, запрос, чей вывод показывается в Рисунке 14.2, SELECT snum, city имеет двойную комбинацию значений (snum=1001, city='London'), потому что мы не указали, чтобы SQL устранил дубликаты. Однако, если мы используем UNION в комбинации этого запроса с ему подобным в таблице Продавцов, то эта избыточная комбинация будет устранена. Рисунок 14.3 показывает вывод следующего запроса. SELECT snum, city UNION SELECT snum, city =============== SQL Execution Log ============ Рисунок 14.2. Одиночный запрос с дублированным выводом. =============== SQL Execution Log ============ Рисунок 14.3. UNION устраняет двойной вывод. Вы можете получить нечто похожее в некоторых программах SQL, используя UNION ALL вместо просто оператора UNION, наподобие этого: SELECT snum, city UNION ALL SELECT snum, city Использование строк и выражений с UNION Иногда, вы можете вставлять константы и выражения в предложения SELECT, используемые с UNION. Это не следует строго указаниям ANSI, но это полезная и необычно используемая возможность. Константы и выражения, которые вы используете, должны встречать совместимые стандарты, которые мы выделяли ранее. Эта свойство полезно, например, чтобы устанавливать комментарии, указывающие, какой запрос вывел данную строку.
Предположим, что вы должны сделать отчет о том, какие продавцы производят наибольшие и наименьшие Заказы по датам. Мы можем объединить два запроса, вставив туда текст, чтобы различать вывод для каждого из них. SELECT a.snum, sname, onum, 'Highest on', odate UNION SELECT a.snum, sname, onum, 'Lowest on ', odate Вывод из этой команды показывается в Рисунке 14.4. Мы должны были добавить дополнительный пробел в строку 'Lowest on', чтобы сделать ее совпадающей по длине со строкой 'Highest on'. Обратите внимание, что Peel выбран при наличии и самого высокого и самого низкого (фактически, он единственный) Заказа на 5 Октября. Так как вставляемые строки двух этих запросов различны, строки не будут устранены как дубликаты. =============== SQL Execution Log ============ Рисунок 14.4. Выбор наибольших и наименьших Заказов.
Читайте также: In Brezhnev’s Soviet Union Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|