Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL ГРЕШКА 1349 Какво пропускам?

Пропускате факта, че изгледите в MySQL не позволяват подзаявки в from клауза. Те са разрешени в select и where и having клаузи обаче.

документация е съвсем ясно:

Във вашия случай вероятно можете да пренапишете from клауза като корелирана подзаявка в select клауза. Можете също така да използвате няколко слоя изгледи, за да правите това, което искате.

РЕДАКТИРАНЕ:

Оператор SELECT в SQL има следните клаузи:SELECT , FROM , WHERE , GROUP BY , HAVING и ORDER BY (според стандарта). Освен това MySQL добавя неща като LIMIT и INTO OUTFILE . Можете да видите това по начина, по който MySQL описва SELECT клауза в документацията . Можете също да видите това в документацията за почти всяка база данни.

Операции като join са част от FROM клауза (подобно на WITH ROLLUP е част от GROUP BY и DESC е част от ORDER BY ). Това може да изглежда като тайнствени синтактични конвенции, но става важно, когато има ограничение като това по-горе.

Може би една от причините за объркването е стилът на отстъп, който звучи така:

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

Където операторите за присъединяване се подреждат под select . Това е подвеждащо. Бих написал това като:

select 
from t1 join
     t2
     on . . .

Само select клаузите се подреждат под select.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Latin-1 / UTF-8 кодиране php

  2. MySQL размито търсене на уличния адрес

  3. dbWriteTable(..., append =T) се презаписва в R

  4. java.sql.SQLException:Неизвестна системна променлива 'query_cache_size'

  5. Обяснете самоприсъединяването