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

Correzione di "ERRORE 1250 (42000):la tabella '...' da uno dei SELECT non può essere utilizzata nella clausola ORDER globale" quando si utilizza UNION in MySQL

Se viene visualizzato un errore che dice "ERRORE 1250 (42000):la tabella '...' da uno dei SELECT non può essere utilizzata nella clausola ORDER globale" quando si utilizza UNION clausola in una query MySQL, è probabilmente perché stai qualificando il nome di una colonna con il suo nome di tabella.

Questo non funziona in MySQL.

Per risolvere questo 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 global ORDER clause

Qui ho cercato di ordinare i risultati per TeacherName colonna, ma ho qualificato quella colonna con il nome della tabella (ho usato Teachers.TeacherName per fare riferimento al nome della colonna).

MySQL non consente di fare riferimento alle tabelle in questo modo quando si ordinano i risultati di un UNION operazione.

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;

Risultato:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Bill        |
| Cathy       |
| Ein         |
| Faye        |
| Jet         |
| Spike       |
| Warren      |
+-------------+

Soluzione 2

Se l'opzione precedente non è adatta, un altro modo per risolvere il problema consiste nell'utilizzare un alias. In altre parole, assegna un alias alla colonna, quindi fai riferimento a tale alias in ORDER BY clausola:

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

Risultato:

+--------+
| t      |
+--------+
| Ben    |
| Bill   |
| Cathy  |
| Ein    |
| Faye   |
| Jet    |
| Spike  |
| Warren |
+--------+