No, no hay forma de hacer referencia a los alias, pero puede asignar la expresión a una variable y luego hacer referencia a la variable en la misma cláusula de selección.
Dentro de una declaración de selección, la asignación de variables siempre se realiza mediante el operador infijo :=
. *En un SET
sentencia, puede ser =
o :=
.
p.ej.
SELECT
ord_id
, candy_id
, price
, quantity
, @exc_cost := price * quantity AS exc_cost
, @exc_cost * @tax_rate AS my_favourite_field
...
<FROM CLAUSE>
También puede realizar la asignación de variables condicionalmente.
p.ej.
IF(quantity > 90,
@exc_cost := price * quantity * 0.95
, @exc_cost := price * quantity) AS exc_cost
Nota 1:en ausencia de medidas agregadas y cláusula group by, las variables se evalúan según el orden de las columnas:
SELECT @t, @t+2 FROM (SELECT @t := 1) a
produce la salida
@t @t+2
1 3