SQL: UNION Operator (Español)
ejemplo-diferentes nombres de campo
no es necesario que las columnas correspondientes en cada instrucción SELECT tengan el mismo nombre, pero sí deben ser los mismos tipos de datos correspondientes.
cuando no tiene los mismos nombres de columna entre las instrucciones SELECT, se vuelve un poco complicado, especialmente cuando desea ordenar los resultados de la consulta utilizando la cláusula ORDER BY.
veamos cómo usar el operador de unión con diferentes nombres de columna y ordenar los resultados de la consulta.,
por ejemplo:
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
en este ejemplo de unión SQL, dado que los nombres de columna son diferentes entre las dos sentencias SELECT, es más ventajoso hacer referencia a las columnas en la cláusula ORDER BY por su posición en el conjunto de resultados. En este ejemplo, hemos ordenado los resultados por supplier_id/company_id en orden ascendente, como se indica por el ORDER BY 1
. Los campos supplier_id / company_id están en la posición # 1 en el conjunto de resultados.
ahora, exploremos este ejemplo más a fondo con datos.,p>
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
obtendrá los siguientes resultados:
supplier_id | supplier_name |
---|---|
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
en Primer lugar, observe que el registro con supplier_id de 3000 sólo aparece una vez en el conjunto de resultados debido a que la consulta de UNIÓN eliminado las entradas duplicadas.,
segundo, observe que los encabezados de columna en el conjunto de resultados se llaman supplier_id y supplier_name. Esto se debe a que estos fueron los nombres de columna utilizados en la primera instrucción SELECT en la Unión.
Si hubiera querido, podría haber suavizado las columnas de la siguiente manera:
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;
Ahora, los encabezados de columna en el resultado será un alias como ID_Value para la primera columna y Name_Value de la segunda columna.,
ID_Value | Name_Value |
---|---|
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |