Hvis du får "FEJL 1250 (42000):Tabel '...' fra en af SELECT'erne kan ikke bruges i ORDER-klausulen", er det sandsynligvis fordi du kvalificerer et kolonnenavn med dets tabelnavn, når du bruger en operator såsom UNION
, INTERSECT
, eller EXCEPT
i MariaDB.
For at rette dette skal du enten fjerne tabelnavnet eller bruge et kolonnealias.
Eksempel på fejl
Her er et eksempel på kode, der producerer fejlen:
(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 dette tilfælde forsøgte jeg at sortere resultaterne efter TeacherName
kolonne, men jeg kvalificerede den kolonne med tabelnavnet (jeg brugte Teachers.TeacherName
for at henvise til kolonnenavnet).
Referencetabeller som denne virker ikke, når du bestiller resultaterne af en UNION
drift i MariaDB. Det samme gælder, når du bestiller resultater af INTERSECT
operatoren og EXCEPT
operatør.
Løsning 1
En måde at løse dette problem på er at fjerne tabelnavnet fra ORDER BY
klausul:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Løsning 2
En anden måde at løse det på er at bruge et alias for kolonnen:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Med denne mulighed tildeler vi et alias til kolonnen og henviser derefter til dette alias i ORDER BY
klausul.