Calcular y asignar nombre a valores de columna de un resultado en MySQL

La mayoría de las consultas vistas hasta ahora generan resultados recuperando valores de tablas. MySQL también le permite calcular valores a partir de los resultados de expresiones, sin hacer referencia a tablas. Las expresiones pueden ser simples o complejas. La siguiente consulta evalúa una expresión simple (una constante) y otra más compleja que implica varias operaciones matemáticas e invocaciones de funciones que generan la raíz cuadrada de una expresión y aplican al resultado tres decimales:

mysql> SELECT 17, FORMAT(SQRT(25+13), 3);

17 FORMAT (SQRT(25+13), 3)
17 6.164

Las expresiones también pueden hacer referencia a columnas de tablas:

mysql> SELECT CONCAT(first_name,' ',last_name),CONCAT(city,', ',state)
-> FROM president;

CONCAT(first_name,' ',last_name) CONCAT(city,', ',state)
George Washington Wakefield, VA
John Adams Braintree, MA
Thomas Jefferson Albemarle Country, VA
James Madison Port Conway, VA
...

Esta consulta muestra nombres de presidente en una misma cadena concatenando nombres y apellidos separados por un espacio. También separa el lugar y fecha de nacimiento con una coma y un espacio.

Al usar una expresión para calcular el valor de una columna, se convierte en el nombre de la columna y se utiliza como encabezado. Esto puede crear columnas de gran tamaño si la expresión es extensa, como en la consulta anterior. Para solucionarlo, puede asignar a la columna otro nombre por medio de la construcción AS nombre. Es lo que llamamos alias de columna. El resultado de la consulta anterior puede tener más sentido de esta otra forma:

mysql> SELECT CONCAT(first_name,' ', last_name) AS Name,
-> CONCAT(city,', ',state) AS Birthplace
-> FROM president;

Name Birthplace
George Washington Wakefield, VA
John Adams Braintree, MA
Thomas Jefferson Albemarle Country, VA
James Madison Port Conway, VA
...

Si el alias de columna contiene espacios, inclúyalos entre comillas:

mysql> SELECT CONCAT(first_name,' ',last_name) AS 'President Name',
-> CONCAT(city,', ',state) AS 'Place of Birth'
-> FROM president;

President Name Place or Birth
George Washington Wakefield, VA
John Adams Braintree, MA
Thomas Jefferson Albemarle Country, VA
James Madison Port Conway, VA
...

En una consulta, la palabra clave AS es de carácter opcional y sirve para proporcionar una alias de columna:

mysql> SELECT 1, 2 AS two, 3 three;

1 two three
1 2 3

Preferimos incluir AS, ya que evita escribir consultas válidas pero que no generan el resultado esperado. Por ejemplo, podría escribir una consulta para seleccionar nombres de presidentes y olvidar la coma entre las columnas first_name y last_name:

mysql> SELECT first_name last_name FROM president;

last_name
George
John
Thomas
James

Como resultado, la consulta no muestra las dos columnas sino sólo first_name y considera last_name como alias, lo que la convierte en su etiqueta. Si una consulta no recupera el número de columnas esperado y utiliza nombres diferentes, compruebe si ha olvidado la coma entre las columnas.

Comparte