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

MySQL FEJL 1349 Hvad mangler jeg?

Du mangler det faktum, at visninger i MySQL ikke tillader underforespørgsler i from klausul. De er tilladt i select og where og having klausuler dog.

dokumentationen er helt klart:

I dit tilfælde kan du sandsynligvis omskrive from klausul som en korreleret underforespørgsel i select klausul. Du kan også bruge flere lag af visninger til at gøre, hvad du vil.

EDIT:

En SELECT-sætning i SQL har følgende klausuler:SELECT , FROM , WHERE , GROUP BY , HAVING , og ORDER BY (ifølge standarden). Derudover tilføjer MySQL ting som LIMIT , og INTO OUTFILE . Du kan se dette på den måde, MySQL beskriver SELECT klausul i dokumentationen . Du kan også se dette i dokumentationen til næsten enhver database.

Handlinger såsom join er en del af FROM klausul (tilsvarende WITH ROLLUP er en del af GROUP BY og DESC er en del af ORDER BY ). Disse kan virke som mystiske syntaktiske konventioner, men det bliver vigtigt, når der er en begrænsning som den ovenfor.

En af grundene til forvirringen er måske en indrykningsstil, der lyder sådan:

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

Hvor join-sætningerne står på linje under select . Dette er misvisende. Jeg ville skrive dette som:

select 
from t1 join
     t2
     on . . .

Kun select klausuler er på linje under select.



  1. MINDRE END ELLER SIG I Oracle SQL

  2. Hvordan overfører man mysql-tabel til hive?

  3. konverter MySQL SET datatype til Postgres

  4. Brug af DISTINCT til specifikke kolonner