Om du får felmeddelandet "1054 (42S22):Okänd kolumn '...' i 'ordningssats'" när du använder UNION
klausul i MySQL kan det bero på att du försöker referera till en aliasad kolumn med dess kolumnnamn.
När du använder UNION
sats i MySQL, om en kolumn har ett alias, måste du använda det aliaset i någon ORDER BY
klausul som refererar till den kolumnen.
Så för att åtgärda felet, se till att referera till kolumnen med dess alias. Alternativt kan du ta bort aliaset och referera till kolumnnamnet direkt.
Exempel på fel
Här är ett exempel på kod som ger felet:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Resultat:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'
Här försökte jag sortera resultaten efter TeacherName
kolumn, men den kolumnen har ett alias. Det faktum att jag inte använde aliaset i ORDER BY
klausul räckte för att skapa felet.
Lösning 1
Ett sätt att lösa det här problemet är att använda aliaset i ORDER BY
klausul:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Resultat:
+--------+ | t | +--------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +--------+
Det löste problemet.
Lösning 2
Ett annat sätt att göra det är att ta bort aliaset helt och hållet:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Resultat:
+-------------+ | TeacherName | +-------------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +-------------+