sql >> Database teknologi >  >> RDS >> Mysql

Ret "FEJL 1250 (42000):Tabel '...' fra en af ​​SELECT'erne kan ikke bruges i global ORDER-klausul", når du bruger UNION i MySQL

Hvis du får en fejl, der lyder "FEJL 1250 (42000):Tabel '...' fra en af ​​SELECT'erne kan ikke bruges i den globale ORDER-klausul", når du bruger UNION klausul i en MySQL-forespørgsel, er det sandsynligvis fordi du kvalificerer et kolonnenavn med dets tabelnavn.

Dette virker ikke i MySQL.

For at løse dette problem skal du enten fjerne tabelnavnet eller bruge et kolonnealias.

Eksempel på fejl

Her er et eksempel på kode, der producerer fejlen:

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

Resultat:

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

Her forsøgte jeg at sortere resultaterne efter TeacherName kolonne, men jeg kvalificerede den kolonne med tabelnavnet (jeg brugte Teachers.TeacherName for at henvise til kolonnenavnet).

MySQL tillader ikke, at der refereres til tabeller på denne måde, når resultaterne af en UNION bestilles operation.

Løsning 1

En måde at løse dette på er at fjerne tabelnavnet fra ORDER BY klausul:

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

Resultat:

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

Løsning 2

Hvis den tidligere mulighed ikke er egnet, er en anden måde at løse problemet på ved at bruge et alias. Med andre ord, tildel et alias til kolonnen, og referer derefter til det alias i ORDER BY klausul:

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

Resultat:

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

  1. SQL Server dynamisk PIVOT-forespørgsel?

  2. Introduktion til Slowly Changing Dimensions (SCD)

  3. Brug af en variabel i OPENROWSET-forespørgsel

  4. Fremme ydeevne i en hybrid cloud-opsætning