Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL ERROR 1349 Qu'est-ce qui me manque ?

Il vous manque le fait que les vues dans MySQL n'autorisent pas les sous-requêtes dans le from clause. Ils sont autorisés dans le select et where et having clauses, cependant.

La documentation est assez clair :

Dans votre cas, vous pouvez probablement réécrire le from clause en tant que sous-requête corrélée dans le select clause. Vous pouvez également utiliser plusieurs couches de vues pour faire ce que vous voulez.

MODIFIER :

Une instruction SELECT en SQL contient les clauses suivantes :SELECT , FROM , WHERE , GROUP BY , HAVING , et ORDER BY (selon la norme). De plus, MySQL ajoute des choses comme LIMIT , et INTO OUTFILE . Vous pouvez le voir dans la façon dont MySQL décrit le SELECT clause dans la documentation . Vous pouvez également le voir dans la documentation de presque toutes les bases de données.

Opérations telles que join font partie du FROM clause (de même WITH ROLLUP fait partie du GROUP BY et DESC fait partie de ORDER BY ). Celles-ci peuvent sembler être des conventions syntaxiques obscures, mais cela devient important lorsqu'il y a une restriction comme celle ci-dessus.

L'une des raisons de la confusion est peut-être un style d'indentation qui ressemble à :

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

Où les instructions de jointure s'alignent sous le select . C'est trompeur. J'écrirais ceci comme suit :

select 
from t1 join
     t2
     on . . .

Seul le select les clauses s'alignent sous select.