Du missar det faktum att vyer i MySQL inte tillåter undersökningar i from
klausul. De är tillåtna i select
och where
och having
klausuler dock.
dokumentationen är ganska tydligt:
I ditt fall kan du förmodligen skriva om from
sats som en korrelerad underfråga i select
klausul. Du kan också använda flera lager av vyer för att göra vad du vill.
EDIT:
En SELECT-sats i SQL har följande satser:SELECT
, FROM
, WHERE
, GROUP BY
, HAVING
, och ORDER BY
(enligt standarden). Dessutom lägger MySQL till saker som LIMIT
och INTO OUTFILE
. Du kan se detta på det sätt som MySQL beskriver SELECT
klausul i dokumentationen
. Du kan också se detta i dokumentationen för nästan vilken databas som helst.
Operationer som join
är en del av FROM
sats (på samma sätt WITH ROLLUP
är en del av GROUP BY
och DESC
är en del av ORDER BY
). Dessa kan verka som svåra syntaktiska konventioner, men det blir viktigt när det finns en begränsning som den ovan.
En anledning till förvirringen är kanske en indragsstil som går så här:
select . . .
from t1
inner join t2
on . . .
Där join-satserna raderas under select
. Detta är missvisande. Jag skulle skriva detta som:
select
from t1 join
t2
on . . .
Endast select
satser radas upp under select.