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 UNION ALL con diferentes nombres de columna y ordenar los resultados de la consulta.,
por ejemplo:
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNION ALLSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
en este ejemplo de SQL UNION ALL, dado que los nombres de columna son diferentes entre las dos instrucciones 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.,resultados:
supplier_id | supplier_name |
---|---|
3000 | Apple |
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
en Primer lugar, observe que el registro con supplier_id de 3000 aparece dos veces en el conjunto de resultados debido a la UNIÓN de TODOS los consulta devuelve todas las filas y no eliminar los duplicados.,
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 ALL.
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 > 2000UNION ALLSELECT 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 |
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
Leave a Reply