Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Behebung von „ERROR 1054 (42S22):Unbekannte Spalte ‚…‘ in ‚Order Clause‘ bei Verwendung von UNION in MySQL

Wenn Sie den Fehler „1054 (42S22):Unbekannte Spalte ‚…‘ in ‚Bestellklausel‘“ erhalten, wenn Sie die UNION verwenden -Klausel in MySQL, könnte dies daran liegen, dass Sie versuchen, eine Alias-Spalte anhand ihres Spaltennamens zu referenzieren.

Bei Verwendung von UNION -Klausel in MySQL, wenn eine Spalte einen Alias ​​hat, müssen Sie diesen Alias ​​in jedem ORDER BY verwenden Klausel, die auf diese Spalte verweist.

Um den Fehler zu beheben, verweisen Sie also unbedingt auf die Spalte mit ihrem Alias. Alternativ könnten Sie den Alias ​​entfernen und direkt auf den Spaltennamen verweisen.

Fehlerbeispiel

Hier ist ein Codebeispiel, das den Fehler erzeugt:

(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Ergebnis:

ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'

Hier habe ich versucht, die Ergebnisse nach TeacherName zu ordnen Spalte, aber diese Spalte hat einen Alias. Die Tatsache, dass ich den Alias ​​im ORDER BY nicht verwendet habe -Klausel reichte aus, um den Fehler zu erzeugen.

Lösung 1

Eine Möglichkeit, dieses Problem zu beheben, besteht darin, den Alias ​​in ORDER BY zu verwenden 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 |
+--------+

Das hat das Problem gelöst.

Lösung 2

Eine andere Möglichkeit besteht darin, den Alias ​​vollständig zu entfernen:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Ergebnis:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Bill        |
| Cathy       |
| Ein         |
| Faye        |
| Jet         |
| Spike       |
| Warren      |
+-------------+