MariaDB
 sql >> Database >  >> RDS >> MariaDB

Correzione di "ERRORE 1250 (42000):la tabella '...' da uno dei SELECT non può essere utilizzata nella clausola ORDER" in MariaDB

Se ricevi "ERROR 1250 (42000):la tabella '...' da uno dei SELECT non può essere utilizzata nella clausola ORDER", probabilmente è perché stai qualificando un nome di colonna con il suo nome di tabella quando usi un operatore come UNION , INTERSECT o EXCEPT in MariaDB.

Per risolvere il problema, rimuovi il nome della tabella o utilizza un alias di colonna.

Esempio di errore

Ecco un esempio di codice che produce l'errore:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;

Risultato:

ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in ORDER clause

In questo caso ho provato a ordinare i risultati in base al TeacherName colonna, ma ho qualificato quella colonna con il nome della tabella (ho usato Teachers.TeacherName per fare riferimento al nome della colonna).

Tabelle di riferimento come questa non funzionano quando si ordinano i risultati di un UNION operazione in MariaDB. Lo stesso vale quando si ordinano i risultati di INTERSECT operatore e EXCEPT operatore.

Soluzione 1

Un modo per risolvere questo problema è rimuovere il nome della tabella da ORDER BY clausola:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Soluzione 2

Un altro modo per risolverlo è utilizzare un alias per la colonna:

(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Con questa opzione, assegniamo un alias alla colonna, quindi facciamo riferimento a tale alias in ORDER BY clausola.