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

Correzione di "ERRORE 1054 (42S22):colonna sconosciuta" colname" in "clausola di ordine" in MariaDB

Se ricevi l'errore "ERROR 1054 (42S22):colonna sconosciuta" colname" in "clausola di ordine" ” in MariaDB, è possibile che tu stia tentando di fare riferimento a una colonna con alias tramite il nome della colonna.

Questo è un errore comune durante l'esecuzione di query che uniscono due o più tabelle. Può succedere anche quando si utilizzano operatori come UNION , INTERSECT e EXCEPT .

In genere, se una colonna ha un alias, devi utilizzare quell'alias in qualsiasi ORDER BY clausola che fa riferimento a quella colonna.

Per correggere l'errore, fai semplicemente riferimento alla colonna con il suo alias.

In alternativa, puoi rimuovere del tutto l'alias e fare riferimento direttamente al nome della colonna.

Esempio di errore

Ecco un esempio di codice che produce l'errore:

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

Risultato:

ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'

Qui non ho usato l'alias in ORDER BY clausola che ha provocato l'errore.

Soluzione 1

Un modo per risolvere questo problema è utilizzare l'alias in ORDER BY clausola:

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

Risultato:

+-------+
| t     |
+-------+
| Ben   |
| Cathy |
+-------+

In questo caso, l'alias diventa l'intestazione della colonna nel risultato.

Soluzione 2

Un altro modo per farlo è rimuovere del tutto l'alias:

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

Risultato:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Cathy       |
+-------------+

Questa volta il nome della colonna diventa l'intestazione della colonna.