MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Fix „ERROR 1250 (42000):Table ‘…’ from one of the SELECTs can not be used in ORDER Clause” in MariaDB

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 UNION , 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.