sql >> Base de Datos >  >> RDS >> Mysql

Uso de alias de columna en la misma cláusula SELECT

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