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

Napraw „BŁĄD 1250 (42000):Tabela „…” z jednej z SELECTów nie może być użyta w globalnej klauzuli ORDER” podczas używania UNION w MySQL

Jeśli otrzymujesz błąd, który brzmi „BŁĄD 1250 (42000):Tabela „…” z jednej z SELECTów nie może być użyta w globalnej klauzuli ORDER” podczas korzystania z UNION w zapytaniu MySQL, prawdopodobnie dlatego, że kwalifikujesz nazwę kolumny z jej nazwą tabeli.

To nie działa w MySQL.

Aby rozwiązać ten problem, usuń nazwę tabeli lub użyj aliasu kolumny.

Przykład błędu

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

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

Wynik:

ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in global ORDER clause

Tutaj próbowałem uporządkować wyniki według TeacherName kolumna, ale zakwalifikowałem tę kolumnę nazwą tabeli (użyłem Teachers.TeacherName odwoływać się do nazwy kolumny).

MySQL nie pozwala na odwoływanie się do tabel w ten sposób podczas porządkowania wyników UNION operacja.

Rozwiązanie 1

Jednym ze sposobów rozwiązania tego problemu jest usunięcie nazwy tabeli z ORDER BY klauzula:

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

Wynik:

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

Rozwiązanie 2

Jeśli poprzednia opcja nie jest odpowiednia, innym sposobem rozwiązania problemu jest użycie aliasu. Innymi słowy, przypisz alias do kolumny, a następnie odwołaj się do tego 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 |
+--------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 10 najlepszych praktyk w MySQL

  2. Zainstaluj wiele instancji MySQL na serwerze Linux — użyj osobnego pliku konfiguracyjnego MySQL

  3. Kompletny system rejestracji użytkowników z wykorzystaniem PHP i bazy danych MySQL

  4. Neo4j - Usuń ograniczenie za pomocą Cypher

  5. Jak ustawić domyślną wartość kolumny sygnatury czasowej na bieżący datownik za pomocą migracji Laravel?