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

Seleccionar columna por alias en MySQL

Respuesta corta:

  1. referencias a alias en la lista SELECT o
  2. Expresiones con alias

La única documentación que he encontrado sobre esto hasta ahora ha sido:https://bugs .mysql.com/bug.php?id=79549

En ese enlace hay lo siguiente:

[9 de diciembre de 2015 15:35] Roy Lyseng...Aquí hay un trasfondo más extenso de la decisión original:

Al contrario de las referencias a alias en subconsultas en la cláusula WHERE (y en GROUP BY, para el caso), no hay razón (excepto el cumplimiento estándar) por la que no deberíamos permitir referencias a alias en la lista SELECT , ya que deberían estar disponibles en la misma fase de ejecución de la consulta. Pero el soporte en 5.6 fue bastante arbitrario:

Dado esto:crea la tabla t1(a int, b int),

El alias en la lista SELECT no es válido:

  select a+b as c,c+1 from t1;

Pero dentro de una subconsulta, la referencia a c es válida:

  select a+b as c,(select c+1) from t1;

Y la subconsulta debe estar después de la definición de alias:

  select (select c+1),a+b as c from t1;

Por lo tanto, es fácil decir que la compatibilidad con referencias a alias en la lista SELECT fue más bien ad-hoc. Sin embargo, intentaremos volver a implementar la solución anterior, pero sin intentar limpiar los agujeros obvios en el soporte para esta función. Pero no se volverá a implementar la referencia a alias en subconsultas en la cláusula WHERE.

Todavía estoy buscando documentación más allá del informe de error que describe esta funcionalidad en los documentos estándar; pero hasta ahora no ha habido suerte.