Cláusula Union
Chamamos a atenção de um cliente que precisa de consultas SQL. Antes de explorarmos os JOINs, vamos aprender sobre a cláusula UNION, que é fundamental para combinar várias tabelas.
Aqui estão alguns pontos importantes sobre o uso do UNION:
-
Quantidade e ordem das colunas: todas as consultas combinadas com
UNIONdevem ter o mesmo número de colunas na mesma ordem; -
Tipos de dados: as colunas em cada consulta devem ter tipos de dados compatíveis;
-
Linhas únicas: por padrão, o
UNIONremove linhas duplicadas. UseUNION ALLse desejar manter os duplicados.
Para uma melhor compreensão de como combinar tabelas corretamente usando a cláusula UNION, foi introduzida uma tabela adicional que contém informações sobre contractors.
Não há muitas informações aqui, apenas first_name, last_name e email.
É possível observar que esta tabela apresenta semelhanças com a tabela employees. Utilizando a cláusula UNION, é possível combinar essas duas tabelas para, por exemplo, visualizar uma lista com todos os nomes e sobrenomes de funcionários e contratados envolvidos na empresa.
Para isso, será utilizada a cláusula UNION:
12345678(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Análise do que está ocorrendo:
Existem duas consultas que retornam três colunas cada, com os mesmos tipos de dados. O objetivo é visualizar o Id, first_name e last_name de todos na empresa. O nome da coluna Id foi padronizado para que ambas as consultas apresentem os mesmos nomes de coluna.
Em seguida, utiliza-se UNION para combinar os resultados dessas consultas, removendo duplicatas (embora não haja neste caso).
Por fim, os resultados são ordenados pelo Id utilizando ORDER BY.
Note
A ordenação é feita pelo
Id, que é uma coluna comum em ambas as tabelas.
Após utilizar UNION, obtém-se uma "consulta única e abrangente" que pode ser manipulada posteriormente com cláusulas como ORDER BY.
Não é possível utilizar diretamente WHERE ou GROUP BY com tabelas combinadas usando UNION. Para aplicar essas cláusulas, é necessário utilizar uma subconsulta na seção FROM. Veja um exemplo de como fazer isso:
123456789SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
O uso de uma subconsulta na seção FROM proporciona maior flexibilidade. Pode parecer complicado no início, mas dominar esse recurso facilita a criação de consultas complexas.
1. Quais colunas são necessárias ao utilizar a cláusula UNION no SQL?
2. Como a cláusula UNION trata linhas duplicadas por padrão?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain the difference between UNION and UNION ALL?
How do I know when to use a subquery with UNION?
Can you show more examples of using UNION with different tables?
Awesome!
Completion rate improved to 4
Cláusula Union
Deslize para mostrar o menu
Chamamos a atenção de um cliente que precisa de consultas SQL. Antes de explorarmos os JOINs, vamos aprender sobre a cláusula UNION, que é fundamental para combinar várias tabelas.
Aqui estão alguns pontos importantes sobre o uso do UNION:
-
Quantidade e ordem das colunas: todas as consultas combinadas com
UNIONdevem ter o mesmo número de colunas na mesma ordem; -
Tipos de dados: as colunas em cada consulta devem ter tipos de dados compatíveis;
-
Linhas únicas: por padrão, o
UNIONremove linhas duplicadas. UseUNION ALLse desejar manter os duplicados.
Para uma melhor compreensão de como combinar tabelas corretamente usando a cláusula UNION, foi introduzida uma tabela adicional que contém informações sobre contractors.
Não há muitas informações aqui, apenas first_name, last_name e email.
É possível observar que esta tabela apresenta semelhanças com a tabela employees. Utilizando a cláusula UNION, é possível combinar essas duas tabelas para, por exemplo, visualizar uma lista com todos os nomes e sobrenomes de funcionários e contratados envolvidos na empresa.
Para isso, será utilizada a cláusula UNION:
12345678(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Análise do que está ocorrendo:
Existem duas consultas que retornam três colunas cada, com os mesmos tipos de dados. O objetivo é visualizar o Id, first_name e last_name de todos na empresa. O nome da coluna Id foi padronizado para que ambas as consultas apresentem os mesmos nomes de coluna.
Em seguida, utiliza-se UNION para combinar os resultados dessas consultas, removendo duplicatas (embora não haja neste caso).
Por fim, os resultados são ordenados pelo Id utilizando ORDER BY.
Note
A ordenação é feita pelo
Id, que é uma coluna comum em ambas as tabelas.
Após utilizar UNION, obtém-se uma "consulta única e abrangente" que pode ser manipulada posteriormente com cláusulas como ORDER BY.
Não é possível utilizar diretamente WHERE ou GROUP BY com tabelas combinadas usando UNION. Para aplicar essas cláusulas, é necessário utilizar uma subconsulta na seção FROM. Veja um exemplo de como fazer isso:
123456789SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
O uso de uma subconsulta na seção FROM proporciona maior flexibilidade. Pode parecer complicado no início, mas dominar esse recurso facilita a criação de consultas complexas.
1. Quais colunas são necessárias ao utilizar a cláusula UNION no SQL?
2. Como a cláusula UNION trata linhas duplicadas por padrão?
Obrigado pelo seu feedback!