Om du får "ERROR 1250 (42000):Tabell '...' från en av SELECTs kan inte användas i ORDER-satsen", beror det förmodligen på att du kvalificerar ett kolumnnamn med dess tabellnamn när du använder en operator som UNION
, INTERSECT
, eller EXCEPT
i MariaDB.
För att åtgärda detta, ta antingen bort tabellnamnet eller använd ett kolumnalias.
Exempel på fel
Här är ett exempel på kod som ger felet:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;
Resultat:
ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in ORDER clause
I det här fallet försökte jag sortera resultaten efter TeacherName
kolumnen, men jag kvalificerade den kolumnen med tabellnamnet (jag använde Teachers.TeacherName
för att referera till kolumnnamnet).
Referenstabeller som denna fungerar inte när du beställer resultaten av en UNION
drift i MariaDB. Detsamma gäller när du beställer resultat av INTERSECT
operatorn och EXCEPT
operatör.
Lösning 1
Ett sätt att åtgärda problemet är att ta bort tabellnamnet från ORDER BY
klausul:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Lösning 2
Ett annat sätt att fixa det är att använda ett alias för kolumnen:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Med det här alternativet tilldelar vi kolumnen ett alias och hänvisar sedan till det aliaset i ORDER BY
klausul.