Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL ERROR 1349 Cosa mi manca?

Ti manca il fatto che le viste in MySQL non consentono sottoquery nel from clausola. Sono consentiti nella select e where e having clausole, tuttavia.

La documentazione è abbastanza chiaro:

Nel tuo caso, probabilmente puoi riscrivere il from clausola come sottoquery correlata in select clausola. Puoi anche utilizzare più livelli di visualizzazione per fare ciò che desideri.

MODIFICA:

Un'istruzione SELECT in SQL ha le seguenti clausole:SELECT , FROM , WHERE , GROUP BY , HAVING e ORDER BY (secondo la norma). Inoltre, MySQL aggiunge cose come LIMIT e INTO OUTFILE . Puoi vederlo nel modo in cui MySQL descrive il SELECT clausola nella documentazione . Puoi anche vederlo nella documentazione di quasi tutti i database.

Operazioni come join fanno parte del FROM clausola (in modo simile WITH ROLLUP fa parte del GROUP BY e DESC fa parte del ORDER BY ). Queste possono sembrare convenzioni sintattiche arcane, ma diventa importante quando c'è una restrizione come quella sopra.

Forse uno dei motivi della confusione è uno stile di indentazione simile a:

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

Dove le istruzioni join si allineano sotto select . Questo è fuorviante. Lo scriverei come:

select 
from t1 join
     t2
     on . . .

Solo il select le clausole si allineano sotto select.