Pergunta

O que é a diferença entre JOIN e UNION? Posso ter um exemplo?

Foi útil?

Solução

Coloca UNION linhas de consultas após o outro, enquanto JOIN faz um produto cartesiano e subconjuntos it - completamente diferentes operações. exemplo trivial de UNION:

mysql> SELECT 23 AS bah
    -> UNION
    -> SELECT 45 AS bah;
+-----+
| bah |
+-----+
|  23 | 
|  45 | 
+-----+
2 rows in set (0.00 sec)

exemplo trivial similary de JOIN:

mysql> SELECT * FROM 
    -> (SELECT 23 AS bah) AS foo 
    -> JOIN 
    -> (SELECT 45 AS bah) AS bar
    -> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
|  23 |  45 | 
+-----+-----+
1 row in set (0.01 sec)

Outras dicas

UNIÃO combina os resultados de dois ou mais consultas em um único conjunto de resultados que inclui todas as linhas que pertencem a todas as consultas na União.

Ao usar JOINs , você pode recuperar dados de duas ou mais tabelas com base em relações lógicas entre as tabelas. Junta-se indicar como SQL deve usar dados de uma tabela para selecionar as linhas em outra tabela.

A operação UNION é diferente de usar joins que combinam colunas de duas tabelas.

UNIÃO Exemplo:

SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]

Output:

Column1    Column2
-------------------
1          2
3          4

ADERIR Exemplo:

SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId

A saída será todas as linhas de ambas as tabelas para o qual o a.Id = b.AFKId condição é verdadeira.

As juntas e os Sindicatos podem ser usados ??para combinar dados de uma ou mais tabelas. As mentiras diferença na forma como os dados são combinados.

Em termos simples, junta-se combinar dados em novas colunas . Se duas tabelas estão unidas, então os dados da primeira tabela é mostrado em um conjunto de coluna ao lado de segunda coluna da tabela na mesma linha.

Sindicatos combinar dados em novas linhas. Se duas tabelas são “unioned” juntos, então os dados da primeira tabela está em um conjunto de linhas, e os dados da segunda tabela em outro conjunto . As linhas estão no mesmo resultado.

Aqui está uma representação visual de uma junção. colunas da Tabela A e B são combinadas em um único resultado.

 enter descrição da imagem aqui

Cada linha no resultado contém colunas de ambos tabela A e B. As linhas são criadas quando colunas de um colunas equipa Quadro de outro. Este jogo é chamado a condição de junção.

Isso faz com que se junta realmente grande para procurar valores e incluí-los em resultados. Este é geralmente o resultado de desnormalizar (invertendo a normalização) e envolve o uso da chave estrangeira em uma tabela para procurar valores de coluna usando a chave primária em outra.

Agora compare a representação acima com a de uma união. Em uma união cada linha dentro do resultado é de uma tabela ou outro. Numa união, colunas não são combinados para criar resultados, as linhas são combinadas.

 enter descrição da imagem aqui

Ambos se junta e sindicatos pode ser usado para combinar dados de uma ou mais tabelas em um único resultado. Ambos ir sobre esta é maneiras diferentes. Considerando uma junção é usado para combinar colunas de tabelas diferentes, a união é usado para combinar linhas.

Fonte

Você pode ver as mesmas explicações esquemáticos para ambos, mas estes são totalmente confuso.

Para UNION:

Enter descrição da imagem aqui

Para JOIN:

Enter descrição da imagem aqui

JOIN:

A junção é usada para exibir colunas com o mesmo ou diferentes nomes de tabelas diferentes. A saída exibida terá todas as colunas mostradas individualmente. Ou seja, o colunas serão alinhados ao lado do outro.

UNION:

O operador de conjunto UNION é usado para combinar dados de dois tabelas que têm colunas com o mesmo tipo de dados. Quando um UNION é executado os dados de ambas as tabelas serão recolhido numa única coluna que tem o mesmo tipo de dados.

Por exemplo:

Veja as duas tabelas mostradas abaixo:

Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG

Agora, para a realização de um JOIN digite a consulta é mostrada abaixo.

SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);

articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG

Essa é uma junção.

significa união que você tem que tabelas ou conjunto de resultados com a mesma quantidade e tipo de colunas e você adicionar este a tabelas / conjuntos de resultados juntos. Veja este exemplo:

Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4

SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007

articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4

Eles são coisas completamente diferentes.

A juntar permite relacionar dados semelhantes em diferentes tabelas.

A união retorna os resultados de duas consultas diferentes como um único conjunto de registros.

União faz duas consultas olhar como um. Junta são para examinar duas ou mais tabelas em uma instrução de consulta única

As juntas e os sindicatos podem ser usados ??para combinar dados de uma ou mais tabelas. As mentiras diferença na forma como os dados são combinados.

Em termos simples, junta-se combinar dados em novas colunas. Se duas tabelas estão unidas, então os dados da primeira tabela é mostrado em um conjunto de coluna ao lado de segunda coluna da tabela na mesma linha.

Os sindicatos combinar dados em novas linhas. Se duas tabelas são “unioned” juntos, então os dados da primeira tabela está em um conjunto de linhas, e os dados da segunda tabela em outro conjunto. As linhas estão no mesmo resultado.

1. O SQL junta cláusula é usada para combinar os registros de duas ou mais tabelas em um banco de dados. Uma união é um meio para a combinação de campos de duas tabelas usando valores comum para cada.

2. O operador UNION SQL combina o resultado de duas ou mais instruções SELECT. Cada instrução SELECT dentro da União devem ter o mesmo número de colunas. As colunas também devem ter tipos de dados semelhantes. Além disso, as colunas em cada instrução SELECT deve estar na mesma ordem.

Por exemplo: A Tabela 1 clientes / table 2 ordens

junção interna:

SELECIONAR ID, NOME, valor, data

de clientes

INNER JOIN ORDENS

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

união:

SELECIONAR ID, NOME, valor, data

de clientes

LEFT JOIN ORDENS

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

UNION

SELECIONAR ID, NOME, valor, data De clientes

RIGHT JOIN ORDENS

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Ussing UNION

UNION é combina os resultados de duas ou mais consultas em um único conjunto de resultados que inclui todas as linhas que pertencem a todas as consultas na União.

UNION Example:
SELECT 121 AS [Column1], 221 AS [Column2]
UNION
SELECT 321 AS [Column1], 422 AS [Column2]
Output:

Column1    Column2
-------------------
121          221
321          422

Ussing JOINs

joins, você pode recuperar dados a partir de duas ou mais tabelas com base em relações lógicas entre as tabelas.

JOIN Example:
SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id

Em resumo, eles são semelhantes, em que duas tabelas ou conjuntos de resultados estão sendo combinadas, mas UNIÃO é realmente para a combinação de conjuntos de resultados com o mesmo número de colunas com as colunas existência de tipos de dados semelhantes. A estrutura é o mesmo, apenas novas linhas estão sendo adicionados.

Na junta, você pode combinar tabelas / conjuntos de resultados com qualquer estrutura possível, incluindo uma junção cartesiana, onde não há compartilhada / colunas semelhantes.

União operação é resultado combinado da Vertical agregado das linhas, União operação é combinado resultado da Horizontal Aggregate das Colunas.

Eu gosto de pensar a diferença em geral como sendo:

  • JOINS unir tabelas
  • UNION (et all) combina consultas.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top