DB2 - Exemplos simples - UNION vs UNION ALL
A UNION operation combines two sets of columns and removes duplicates. The UNION ALL expression does the same but does not remove the duplicates. When DB2 encounters the keyword, it processes each select/sub-select to form an interim result table, then it combines the interim result table and deletes duplicate rows to form a combined result table working similar as a JOIN. To use this clause, each SELECT statement must have
Uma operação UNION combina dois conjuntos de colunas e remove duplicatas. A expressão UNION ALL faz o mesmo, mas não remove as duplicatas. Quando o DB2 encontra a palavra-chave, ele processa cada seleção/sub-seleção para formar uma tabela de resultados provisória e, em seguida, combina a tabela de resultados provisória e exclui linhas duplicadas para formar uma tabela de resultados combinada funcionando de maneira semelhante a JOIN. Para usar esta cláusula, cada instrução SELECT deve ter
Syntax: SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION / UNION ALL SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
Note: When including the UNION ALL in the same SQL statement as a UNION operator, however, the result of the operation depends on the order of evaluation. Where there are no parentheses, evaluation is from left to right. Where parentheses are included, the parenthesized sub-select is evaluated first, followed, from left to right, by the other parts of the statement.
Recursive SQL requires that there be a UNION ALL phrase between the two main parts of the statement. As UNION ALL, unlike the UNION, allows for duplicate output rows which is what often comes out of recursive processing. Let’s consider below example.
Nota: Ao incluir UNION ALL na mesma instrução SQL como um operador UNION, no entanto, o resultado da operação depende da ordem de avaliação. Onde não há parênteses, a avaliação é da esquerda para a direita. Onde os parênteses são incluídos, a sub-seleção entre parênteses é avaliada primeiro, seguida, da esquerda para a direita, pelas outras partes da instrução.
O SQL recursivo requer que haja uma frase UNION ALL entre as duas partes principais da instrução. Como UNION ALL, ao contrário de UNION, permite linhas de saída duplicadas, o que geralmente resulta do processamento recursivo. Vamos considerar o exemplo abaixo
------------------------------------------ Table R1 Table R2 ------------------------------------------ Abhi Abhi Abhi Abhi Abhi Baby Baby Baby Baby Baby Cat Cat Cat Dan Cat Elie SELECT R1 FROM R1 UNION / UNION ALL SELECT R2 FROM R2 ORDER BY 1; ------------------------------------------ UNION UNION ALL ------------------------------------------ Abhi Abhi Baby Abhi Cat Abhi Dan Abhi Elie Abhi Baby Baby Baby Baby Baby Cat Cat Cat Cat Dan Elie
When you use :
Quando você usa:
SELECT A + B AS X … UNION SELECT X … ORDER BY X
If the result columns are unnamed, use a positive integer to order the result. The number refers to the position of the expression in the list of expressions you include in your sub-selects.
Se as colunas de resultado não tiverem nome, use um número inteiro positivo para ordenar o resultado. O número refere-se à posição da expressão na lista de expressões que você inclui em suas sub-seleções.
SELECT A + B … UNION SELECT X ........ ORDER BY 1