Cómo alias un campo o columna en MySQL?

Estoy tratando de hacer algo como esto. Pero recibo un error de columna desconocido:

SELECT SUM(field1 + field2) AS col1, col1 + field3 AS col3 from core 

Básicamente, quiero usar el alias para no tener que realizar las operaciones anteriores. ¿Es esto posible en mysql?

Considere usar una subconsulta, como:

 SELECT col1 , col1 + field3 AS col3 FROM ( SELECT field1 + field2 as col1 , field3 from core ) as SubQueryAlias 

select @code:= SUM(field1 + field2), @code+1 from abc;

Pero, tenga en cuenta lo siguiente (de los documentos MySQL 5.6 ):

Como regla general, salvo en las sentencias SET, nunca debe asignar un valor a una variable de usuario y leer el valor dentro de la misma instrucción. Por ejemplo, para incrementar una variable, está bien:

 SET @a = @a + 1; 

Para otras declaraciones, como SELECT, puede obtener los resultados que espera, pero esto no está garantizado. En la siguiente statement, puede pensar que MySQL evaluará @a primero y luego realizará una asignación en segundo lugar:

 SELECT @a, @a:=@a+1, ...; 

Sin embargo, el orden de evaluación para expresiones que involucran variables de usuario no está definido.

Por lo tanto, use bajo su propio riesgo.

Puede select el alias:

 SELECT SUM(field1 + field2) AS col1, (select col1) + field3 AS col3 from core 

Esto funciona.

De acuerdo con la especificación , no se garantiza que la respuesta de Ravi Parekh funcione siempre, ya que “el orden de evaluación de las expresiones que involucran variables de usuario no está definido”.

Encontré esta respuesta después de que traté de usar una variable y obtuve resultados extraños.

 select @code:= SUM(field1 + field2), (@code*1) from abc; 

@ code * 1 encubierta en expresión numérica y puede usar en cualquier lugar como

 select @code:= SUM(field1 + field2), (@code*1)+field3 from abc; 

La respuesta corta es no:

 mysql> select 1 as a, a + 1 as b; ERROR 1054 (42S22): Unknown column 'a' in 'field list' postgresql# select 1 as a, a + 1 as b; ERROR: column "a" does not exist 

Dicho esto, algunas implementaciones de SQL permiten usar los alias en las cláusulas where / group by / having, por ejemplo:

 postgresql# select 1 as a group by a; -- 1 row