Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo dell'alias di colonna nella stessa clausola SELECT

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