Mysql
 sql >> Database >  >> RDS >> Mysql

Seleziona la colonna per alias in MySQL

Risposta breve:

  1. riferimenti agli alias nell'elenco SELECT o
  2. Espressioni con alias

L'unica documentazione che ho trovato su questo finora è stata:https://bugs .mysql.com/bug.php?id=79549

In quel link c'è il seguente:

[9 dicembre 2015 15:35] Roy Lyseng... Ecco uno sfondo più lungo per la decisione originale:

Contrariamente ai riferimenti agli alias nelle sottoquery nella clausola WHERE (e in GROUP BY, se è per questo), non vi è alcun motivo (tranne la conformità standard) per cui non dovremmo consentire i riferimenti agli alias nell'elenco SELECT , poiché dovrebbero essere disponibili nella stessa fase di esecuzione della query. Ma il supporto in 5.6 era abbastanza arbitrario:

Detto questo:crea la tabella t1(a int, b int),

L'alias nell'elenco SELECT non è valido:

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

Ma all'interno di una sottoquery, il riferimento a c è valido:

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

E la sottoquery deve essere dopo la definizione dell'alias:

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

Quindi, è facile affermare che il supporto per riferimenti ad alias nell'elenco SELECT era piuttosto ad hoc. Tuttavia, cercheremo di reintegrare la vecchia soluzione, ma senza tentare di ripulire gli evidenti buchi nel supporto per questa funzionalità. Ma i riferimenti agli alias nelle sottoquery nella clausola WHERE non verranno reimplementati.

Sto ancora cercando documentazione oltre alla segnalazione di bug che descriva questa funzionalità nei documenti standard; ma finora senza fortuna.