Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Napraw „BŁĄD 1054 (42S22):Nieznana kolumna „…” w „klauzula zamówienia” podczas używania UNION w MySQL

Jeśli otrzymujesz błąd „1054 (42S22):Nieznana kolumna „…” w „klauzuli zamówienia”” podczas korzystania z UNION w MySQL, może to być spowodowane tym, że próbujesz odwołać się do kolumny z aliasem według jej nazwy.

Podczas korzystania z UNION klauzula w MySQL, jeśli kolumna ma alias, musisz użyć tego aliasu w dowolnym ORDER BY klauzula odwołująca się do tej kolumny.

Aby naprawić błąd, pamiętaj, aby odwoływać się do kolumny za pomocą jej aliasu. Alternatywnie możesz usunąć alias i bezpośrednio odwołać się do nazwy kolumny.

Przykład błędu

Oto przykład kodu, który generuje błąd:

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

Wynik:

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

Tutaj próbowałem uporządkować wyniki według TeacherName kolumna, ale ta kolumna ma alias. Fakt, że nie użyłem aliasu w ORDER BY klauzula wystarczyła do wygenerowania błędu.

Rozwiązanie 1

Jednym ze sposobów rozwiązania tego problemu jest użycie aliasu w ORDER BY klauzula:

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

Wynik:

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

To rozwiązało problem.

Rozwiązanie 2

Innym sposobem na to jest całkowite usunięcie aliasu:

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

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić, czy wiersz istnieje w MySQL? (tzn. sprawdź, czy wiadomość e-mail istnieje w MySQL)

  2. Przygotowane oświadczenia MySQL

  3. Błąd MySQL:specyfikacja klucza bez długości klucza

  4. MySQL – NAJMNIEJSZE i NAJWIĘKSZE operatory porównania

  5. 'IF' w instrukcji 'SELECT' - wybierz wartość wyjściową na podstawie wartości kolumn