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.