No, non c'è un modo per fare riferimento agli alias, ma puoi assegnare l'espressione a una variabile e quindi fare riferimento alla variabile nella stessa clausola select.
All'interno di un'istruzione select l'assegnazione di una variabile viene sempre eseguita dall'operatore infix :=
. *In un SET
istruzione, può essere =
o :=
.
per esempio.
SELECT
ord_id
, candy_id
, price
, quantity
, @exc_cost := price * quantity AS exc_cost
, @exc_cost * @tax_rate AS my_favourite_field
...
<FROM CLAUSE>
Puoi anche eseguire condizionalmente l'assegnazione di variabili.
per esempio.
IF(quantity > 90,
@exc_cost := price * quantity * 0.95
, @exc_cost := price * quantity) AS exc_cost
Nota 1:in assenza di misure aggregate e raggruppamento per clausola, le variabili vengono valutate in base all'ordine delle colonne:
SELECT @t, @t+2 FROM (SELECT @t := 1) a
produce l'output
@t @t+2
1 3