sql >> Databáze >  >> RDS >> Mysql

Vyberte sloupec podle aliasu v MySQL

Krátká odpověď:

  1. odkazy na aliasy v seznamu SELECT nebo
  2. Výrazy s aliasy

Jediná dokumentace, kterou jsem k tomu zatím našel, byla:https://bugs .mysql.com/bug.php?id=79549

V tom odkazu je následující:

[9. prosince 2015 15:35] Roy Lyseng...Zde je delší pozadí původního rozhodnutí:

Na rozdíl od odkazů na aliasy v poddotazech v klauzuli WHERE (a v tomto případě v GROUP BY) neexistuje žádný důvod (kromě standardní shody), abychom nepovolili odkazy na aliasy v seznamu SELECT , protože by měly být dostupné ve stejné fázi provádění dotazu. Ale podpora v 5.6 byla docela libovolná:

Vzhledem k tomu:vytvořte tabulku t1(a int, b int),

Alias ​​v seznamu SELECT není platný:

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

Ale v rámci poddotazu je odkaz na c platný:

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

A poddotaz musí být po definici aliasu:

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

Je tedy snadné říci, že podpora odkazů na aliasy v seznamu SELECT bylo spíše ad-hoc. Přesto se pokusíme znovu implementovat staré řešení, ale bez pokusu o vyčištění zjevných děr v podpoře této funkce. Ale odkazování na aliasy v poddotazech v klauzuli WHERE nebude znovu implementováno.

Stále hledám dokumentaci nad rámec zprávy o chybě popisující tuto funkci ve standardních dokumentech; ale zatím bez úspěchu.



  1. Formátujte číslo na 2 desetinná místa

  2. SQL Sloučení více záznamů do jednoho záznamu

  3. Jak nastavit OTA v R12 a 11i

  4. Vylepšení výkonu MySQL bez mezipaměti