Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando Column Alias ​​na mesma cláusula SELECT


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