Wenn Sie „ERROR 1250 (42000):Table '…' from one of the SELECTs can not used in ORDER“-Klausel erhalten, liegt dies wahrscheinlich daran, dass Sie einen Spaltennamen mit seinem Tabellennamen qualifizieren, wenn Sie einen Operator wie SCHNEIDEN
, oder AUSSER
in MariaDB.
Um dies zu beheben, entfernen Sie entweder den Tabellennamen oder verwenden Sie einen Spaltenalias.
Fehlerbeispiel
Hier ist ein Codebeispiel, das den Fehler erzeugt:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;
Ergebnis:
ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in ORDER clause
In diesem Fall habe ich versucht, die Ergebnisse nach TeacherName
zu ordnen Spalte, aber ich habe diese Spalte mit dem Tabellennamen qualifiziert (ich habe Teachers.TeacherName
verwendet um auf den Spaltennamen zu verweisen).
Das Verweisen auf Tabellen wie diese funktioniert nicht, wenn die Ergebnisse einer UNION
sortiert werden Betrieb in MariaDB. Dasselbe gilt für die Sortierung der Ergebnisse von INTERSECT
-Operator und den EXCEPT
Betreiber.
Lösung 1
Eine Möglichkeit, dieses Problem zu beheben, besteht darin, den Tabellennamen aus ORDER BY
zu entfernen Klausel:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Lösung 2
Eine andere Möglichkeit, dies zu beheben, besteht darin, einen Alias für die Spalte zu verwenden:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Mit dieser Option weisen wir der Spalte einen Alias zu und verweisen dann in ORDER BY
auf diesen Alias Klausel.