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";