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

MySQL ERROR 1349 Co mi chybí?

Uniká vám, že pohledy v MySQL neumožňují poddotazy v from doložka. Jsou povoleny v select a where a having doložky, nicméně.

dokumentace je zcela jasné:

Ve vašem případě pravděpodobně můžete přepsat from klauzule jako korelovaný dílčí dotaz v select doložka. K tomu, co chcete, můžete také použít více vrstev zobrazení.

EDIT:

Příkaz SELECT v SQL má následující klauzule:SELECT , FROM , WHERE , GROUP BY , HAVING a ORDER BY (podle standardu). Kromě toho MySQL přidává věci jako LIMIT a INTO OUTFILE . Můžete to vidět tak, jak MySQL popisuje SELECT klauzule v dokumentaci . Můžete to také vidět v dokumentaci k téměř každé databázi.

Operace jako join jsou součástí FROM klauzule (podobně WITH ROLLUP je součástí GROUP BY a DESC je součástí ORDER BY ). Může se to zdát jako tajemné syntaktické konvence, ale je to důležité, když existuje omezení, jako je to výše.

Možná je jedním z důvodů zmatku styl odsazení, který vypadá takto:

select . . .
from t1
inner join t2
     on . . .

Kde se příkazy spojení seřadí pod select . To je zavádějící. Napsal bych to takto:

select 
from t1 join
     t2
     on . . .

Pouze select klauzule seřadit pod select.



  1. Potřebné přenosné řešení SQL upsert (vložení+aktualizace).

  2. Extrahujte hledaný řetězec v kontextu

  3. Zachytitelná závažná chyba:Objekt třídy DateTime nelze převést na řetězec

  4. Jednoduchý výběrový dotaz MySQL je pomalý