Wenn Sie einen Fehler erhalten, der lautet:„ERROR 1250 (42000):Tabelle ‚…‘ von einem der SELECTs kann nicht in der globalen ORDER-Klausel verwendet werden, wenn Sie die UNION
verwenden -Klausel in einer MySQL-Abfrage, liegt es wahrscheinlich daran, dass Sie einen Spaltennamen mit seinem Tabellennamen qualifizieren.
Dies funktioniert nicht in MySQL.
Um dieses Problem 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 global ORDER clause
Hier 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).
MySQL erlaubt es nicht, Tabellen auf diese Weise zu referenzieren, wenn die Ergebnisse einer UNION
geordnet werden Betrieb.
Lösung 1
Eine Möglichkeit, dies 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;
Ergebnis:
+-------------+ | TeacherName | +-------------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +-------------+
Lösung 2
Wenn die vorherige Option nicht geeignet ist, besteht eine andere Möglichkeit zur Behebung des Problems darin, einen Alias zu verwenden. Mit anderen Worten:Weisen Sie der Spalte einen Alias zu und verweisen Sie dann in ORDER BY
auf diesen Alias Klausel:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Ergebnis:
+--------+ | t | +--------+ | Ben | | Bill | | Cathy | | Ein | | Faye | | Jet | | Spike | | Warren | +--------+