query example mysql sql database syntax

mysql - example - Usando un Alias ​​en cálculos de SQL



mysql alias select (4)

Tendrá que usar una subselección para usar ese alias de esa manera

SELECT my_num*5 AS another_number FROM ( SELECT 10 AS my_num FROM table ) x

¿Por qué no funciona esta consulta?

SELECT 10 AS my_num, my_num*5 AS another_number FROM table

En este ejemplo, estoy tratando de usar el alias my_num en otros cálculos. Esto da como resultado una columna desconocida "my_num"

Esta es una versión simplificada de lo que estoy tratando de hacer, pero básicamente me gustaría usar un alias para hacer otros cálculos. Mis cálculos son mucho más complicados y es por eso que sería bueno alias, ya que lo repito varias veces de diferentes maneras.


Simplemente envuelva su alias reutilizado con (SELECT alias) :

SELECT 10 AS my_num, (SELECT my_num) * 5 AS another_number FROM table


`` Otra opción es usar el operador APPLY

SELECT my_num, my_num*5 AS another_number FROM table CROSS APPLY (SELECT 5 AS my_num) X


Los alias en sql no son como variables en un lenguaje de programación. Los alias solo se pueden referenciar nuevamente en ciertos puntos (particularmente en cláusulas GROUP BY y HAVING ). Pero no puede reutilizar un alias en la cláusula SELECT . Por lo tanto, puede usar una consulta derivada (como la sugerida por Rubens Farias ) que le permite cambiar el nombre de sus columnas y / o nombrar las columnas calculadas.

O puede usar una VIEW si sus fórmulas son generalmente corregidas

CREATE VIEW table10 AS SELECT 10 AS my_num FROM table; SELECT my_num * 5 AS another_number FROM table10;

Creo que será un poco más rápido que usar una consulta derivada, pero probablemente dependa mucho de tu consulta real.

O simplemente podría duplicar el trabajo:

SELECT 10 AS my_num, 10 * 5 AS another_number FROM table;

Que podría ser conveniente en algo como php / perl:

my $my_num = 10; my $query = "SELECT $my_num AS my_num, $my_num * 5 AS another_number FROM table";