Articles

SQL: operador da União


exemplo-nomes de campos diferentes

não é necessário que as colunas correspondentes em cada instrução selecionada tenham o mesmo nome, mas eles precisam ser os mesmos tipos de dados correspondentes.

Quando você não tem os mesmos nomes de colunas entre as declarações selecionadas, ele fica um pouco complicado, especialmente quando você quer encomendar os resultados da consulta usando a cláusula de ordem por.

Let’s look at how to use the UNION operator with different column names and order the query results.,

Por exemplo:

SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;

neste exemplo de união SQL, uma vez que os nomes das colunas são diferentes entre as duas declarações selecionadas, é mais vantajoso referenciar as colunas na ordem por cláusula pela sua posição no conjunto de resultados. Neste exemplo, nós classificamos os resultados por supplier_id / company_id em ordem ascendente, como denotado pelo ORDER BY 1. Os campos supplier_id / company_id estão na posição # 1 no conjunto de resultados.

Agora, vamos explorar este exemplo mais adiante com dados.,p>

SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;

Você gostaria de obter os seguintes resultados:

supplier_id supplier_name
3000 Apple
4000 Samsung
7000 Sony
8000 IBM

Primeiro, repare que o registo com supplier_id de 3000 só aparece uma vez no conjunto de resultados porque a consulta UNIÃO removido entradas duplicadas.,

Em segundo lugar, observe que os títulos das colunas no conjunto de resultados são chamados supplier_id e supplier_name. Isto porque estes foram os nomes de colunas usados na primeira instrução selecionada na União.

Se você quisesse, você poderia ter suavizado as colunas da seguinte forma:

SELECT supplier_id AS ID_Value, supplier_name AS Name_ValueFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id AS ID_Value, company_name AS Name_ValueFROM companiesWHERE company_id > 1000ORDER BY 1;

Agora, os títulos de coluna no resultado será alias como ID_Value para a primeira coluna e Name_Value para a segunda coluna.,

ID_Value Name_Value
3000 Apple
4000 Samsung
7000 Sony
8000 IBM