Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz kolumnę według aliasu w MySQL

Krótka odpowiedź:

  1. odniesienia do aliasów na liście SELECT lub
  2. Wyrażenia z aliasami

Jak dotąd jedyna dokumentacja, jaką znalazłem na ten temat to:https://bugs .mysql.com/bug.php?id=79549

W tym łączu znajduje się:

[9 grudnia 2015 15:35] Roy Lyseng...Oto dłuższe tło pierwotnej decyzji:

W przeciwieństwie do odwołań do aliasów w podzapytaniach w klauzuli WHERE (oraz w GROUP BY), nie ma powodu (z wyjątkiem zgodności ze standardami), aby nie zezwalać na odwołania do aliasów na liście SELECT , ponieważ powinny być dostępne w tej samej fazie wykonywania zapytania. Ale wsparcie w 5.6 było dość arbitralne:

Biorąc pod uwagę to:utwórz tabelę t1(a int, b int),

Alias ​​na liście SELECT jest nieprawidłowy:

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

Ale w podzapytaniu prawidłowe jest odniesienie do c:

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

A podzapytanie musi znajdować się po definicji aliasu:

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

Łatwo więc powiedzieć, że obsługa odniesień do aliasów na liście SELECT był raczej doraźny. Niemniej jednak postaramy się ponownie zaimplementować stare rozwiązanie, ale bez próby oczyszczenia oczywistych dziur w obsłudze tej funkcji. Ale odwoływanie się do aliasów w podzapytaniach w klauzuli WHERE nie zostanie ponownie zaimplementowane.

Jeszcze szukam dokumentacji poza raportem o błędzie opisującym tę funkcjonalność w standardowych dokumentach; ale jak dotąd nie ma szczęścia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przeprowadzić migrację w laravel 5.5?

  2. Rekurencyjna procedura składowana Mysql... Osiągnięto limit 0... nie można zmienić zmiennej max_sp_recursion_depth

  3. MySQL:Jak wstawić wiele rekordów z autoinkrementacją tego samego ID

  4. Nieznana kolumna {0} w klauzuli on

  5. Używanie Like In MySQL do operacji wyszukiwania przy użyciu wzorca