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

Chyba duplicitního sloupce MySQL, pouze pokud je dotaz zabalen jako poddotaz

Důvodem, proč se vám zobrazila chyba, je aliasing AS X . Ale problém je opravdu v tom, že jste použili * , namísto výpisu požadovaných polí.

V prvním dotazu SELECT * ve skutečnosti produkuje pole jako:

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

To funguje dobře, pokud se nepokusíte odkazovat na pole přímo jeho názvem a nepoužijete jeho alias. Ať tak či onak, váš SQL engine s tím nebude mít problém, ať už děláte se sadou výsledků cokoli, stále může mít problém.

Když však přesunete dotaz do poddotazu a alias, výsledky AS X , pak skončíte s:

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

Nyní vidíte, proč si stěžuje. Můžete vidět, proč je také špatné používat * , protože tato kombinace může nějakou dobu fungovat, a pak do existující tabulky přidáte nové pole, které je stejné jako jiná tabulka, a prásk, každý dotaz, který jste napsali s oběma těmito tabulkami, nyní musí být přepsáno.



  1. MySQL dotaz k získání nejprodávanějších produktů

  2. Vyhledávání Mysql s řetězcem odděleným čárkou

  3. Dotaz MySQL:Jak správně identifikovat a znovu přeložit výsledné hodnoty oddělené čárkami na původní pojmy pomocí CONCAT_WS a COALESCE

  4. protokolovat aktualizace mysql