Mysql
 sql >> Baza danych >  >> RDS >> Mysql

BŁĄD MySQL 1349 Czego mi brakuje?

Brakuje Ci faktu, że widoki w MySQL nie zezwalają na podzapytania w from klauzula. Są dozwolone w select i where i having jednak klauzule.

dokumentacja jest całkiem jasne:

W twoim przypadku prawdopodobnie możesz przepisać from klauzula jako skorelowane podzapytanie w select klauzula. Możesz także użyć wielu warstw widoków, aby robić to, co chcesz.

EDYCJA:

Instrukcja SELECT w SQL zawiera następujące klauzule:SELECT , FROM , WHERE , GROUP BY , HAVING i ORDER BY (zgodnie z normą). Ponadto MySQL dodaje takie rzeczy jak LIMIT , i INTO OUTFILE . Możesz to zobaczyć w sposób, w jaki MySQL opisuje SELECT klauzula w dokumentacji . Możesz to również zobaczyć w dokumentacji prawie każdej bazy danych.

Operacje takie jak join są częścią FROM klauzula (podobnie WITH ROLLUP jest częścią GROUP BY i DESC jest częścią ORDER BY ). Może się to wydawać tajemniczymi konwencjami składniowymi, ale staje się ważne, gdy istnieje ograniczenie takie jak powyższe.

Być może jednym z powodów zamieszania jest styl wcięcia, który wygląda następująco:

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

Gdzie instrukcje łączenia ustawiają się pod select . To jest mylące. Zapisałbym to jako:

select 
from t1 join
     t2
     on . . .

Tylko select klauzule ustawiają się pod 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. Format czasu PHP

  2. Czy MySQLi domyślnie weryfikuje certyfikaty serwera podczas korzystania z SSL?

  3. mysql zły przyrost kolumny

  4. Istniejące praktyki/wytyczne dotyczące tworzenia nieznormalizowanych tabel podczas procesu normalizacji?

  5. Jak najpierw użyć kodu MySql i Entity Framework 4.1?