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

Błąd zduplikowanej kolumny MySQL tylko wtedy, gdy zapytanie jest opakowane jako podzapytanie

Powodem wystąpienia błędu jest aliasing AS X . Ale tak naprawdę problem polega na tym, że użyłeś * , zamiast wymieniać żądane pola.

W pierwszym zapytaniu SELECT * faktycznie tworzy pola takie jak:

A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted

Działa to dobrze, chyba że próbujesz odwoływać się bezpośrednio do pola poprzez jego nazwę i nie używasz jego aliasu. Tak czy inaczej, twój silnik SQL nie będzie miał z tym problemu, cokolwiek robisz z zestawem wyników, może nadal mieć problem.

Jednak gdy przeniesiesz zapytanie do podzapytania i aliasujesz wyniki AS X , wtedy otrzymujesz:

X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted

Teraz możesz zobaczyć, dlaczego narzeka. Możesz zobaczyć, dlaczego używanie * jest również złe , ponieważ ta kombinacja może działać przez pewien czas, a potem dodajesz nowe pole do istniejącej tabeli, które jest takie samo jak inna tabela i bang, każde zapytanie, które napisałeś z obu tych tabel, teraz musi być przepisany.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Całkowicie usuń MySQL Ubuntu 14.04 LTS

  2. jak ustawić pracę django i mysql z UTF-8?

  3. mysqli_query() oczekuje co najmniej 2 parametrów, 1 podany w?

  4. In Flask-migrate ValueError:nieprawidłowa składnia interpolacji w parametrach połączenia na pozycji 15

  5. Zachowanie MySQL „wybierz do aktualizacji”