Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL ERROR 1349 Was fehlt mir?

Sie übersehen, dass Ansichten in MySQL keine Unterabfragen im from zulassen Klausel. Sie sind im select erlaubt und where und having Klauseln jedoch.

Die Dokumentation ist ganz klar:

In Ihrem Fall können Sie wahrscheinlich den from umschreiben -Klausel als korrelierte Unterabfrage im select Klausel. Sie können auch mehrere Ebenen von Ansichten verwenden, um zu tun, was Sie wollen.

BEARBEITEN:

Eine SELECT-Anweisung in SQL hat die folgenden Klauseln:SELECT , FROM , WHERE , GROUP BY , HAVING , und ORDER BY (nach Norm). Außerdem fügt MySQL Dinge wie LIMIT hinzu , und INTO OUTFILE . Sie können dies daran erkennen, wie MySQL den SELECT beschreibt -Klausel in der Dokumentation . Sie können dies auch in der Dokumentation für fast jede Datenbank nachlesen.

Operationen wie join sind Teil von FROM -Klausel (ähnlich WITH ROLLUP ist Teil von GROUP BY und DESC ist Teil des ORDER BY ). Dies mag wie obskure syntaktische Konventionen erscheinen, aber es wird wichtig, wenn es eine Einschränkung wie die obige gibt.

Vielleicht ist ein Grund für die Verwirrung ein Einrückungsstil, der so aussieht:

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

Wo die Join-Anweisungen unter select ausgerichtet sind . Das ist irreführend. Ich würde dies schreiben als:

select 
from t1 join
     t2
     on . . .

Nur die select Klauseln reihen sich unter select. auf