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

Selecionar coluna por alias no MySQL


Resposta curta:
  1. referências a aliases na lista SELECT ou
  2. Expressões com alias

A única documentação que encontrei sobre isso até agora foi:https://bugs .mysql.com/bug.php?id=79549

Nesse link tem o seguinte:

[9 de dezembro de 2015 15:35] Roy Lyseng...Aqui está um histórico mais longo para a decisão original:

Ao contrário das referências a aliases em subconsultas na cláusula WHERE (e em GROUP BY, nesse caso), não há razão (exceto conformidade padrão) para não permitirmos referências a aliases na lista SELECT , pois devem estar disponíveis na mesma fase de execução da consulta. Mas o suporte no 5.6 era bastante arbitrário:

Dado isso:crie a tabela t1(a int, b int),

O alias na lista SELECT não é válido:
  select a+b as c,c+1 from t1;

Mas dentro de uma subconsulta, a referência a c é válida:
  select a+b as c,(select c+1) from t1;

E a subconsulta deve ser após a definição do alias:
  select (select c+1),a+b as c from t1;

Portanto, é fácil dizer que o suporte para referências a aliases na lista SELECT foi bastante ad hoc. No entanto, tentaremos reimplementar a solução antiga, mas sem tentar limpar as falhas óbvias no suporte a esse recurso. Mas a referência de aliases em subconsultas na cláusula WHERE não será reimplementada.

Ainda estou procurando documentação além do relatório de bug descrevendo esta funcionalidade nos documentos padrão; mas até agora sem sorte.