Não, não há uma maneira de se referir a aliases, mas você pode atribuir a expressão a uma variável e, em seguida, referir-se à variável na mesma cláusula de seleção.
Dentro de uma instrução select, a atribuição de variável é sempre feita pelo operador infixo
:=
. *Em um SET
declaração, pode ser =
ou :=
. por exemplo.
SELECT
ord_id
, candy_id
, price
, quantity
, @exc_cost := price * quantity AS exc_cost
, @exc_cost * @tax_rate AS my_favourite_field
...
<FROM CLAUSE>
Você também pode realizar a atribuição de variáveis condicionalmente.
por exemplo.
IF(quantity > 90,
@exc_cost := price * quantity * 0.95
, @exc_cost := price * quantity) AS exc_cost
Nota 1:Na ausência de medidas agregadas e agrupar por cláusula, as variáveis são avaliadas de acordo com a ordem das colunas:
SELECT @t, @t+2 FROM (SELECT @t := 1) a
produz a saída
@t @t+2
1 3