tener tabla propio ejemplo derivada debe consultas campos cada mysql alias

ejemplo - cada tabla derivada debe tener su propio alias mysql



¿Cómo alias un campo o columna en MySQL? (6)

Considere usar una subconsulta, como:

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

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

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

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


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 intenté usar una variable y obtuve resultados extraños.


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


Puede select el alias:

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

Esto funciona.


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

Pero, tenga en cuenta lo siguiente (de la documentación de MySQL 5.6 ):

Como regla general, aparte de en las sentencias SET, nunca debe asignar un valor a una variable de usuario y leer el valor dentro de la misma sentencia. Por ejemplo, para incrementar una variable, esto 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 declaración, podría 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 de las expresiones que involucran variables de usuario no está definido.

Por lo tanto, utilizar bajo su propio riesgo.


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

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

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