Mysql
 sql >> Base de données >  >> RDS >> Mysql

Correction "ERROR 1250 (42000):La table '...' de l'un des SELECT ne peut pas être utilisée dans la clause ORDER globale" lors de l'utilisation d'UNION dans MySQL

Si vous obtenez une erreur indiquant "ERREUR 1250 (42000):la table '...' de l'un des SELECT ne peut pas être utilisée dans la clause ORDER globale" lors de l'utilisation de UNION clause dans une requête MySQL, c'est probablement parce que vous qualifiez un nom de colonne avec son nom de table.

Cela ne fonctionne pas dans MySQL.

Pour résoudre ce problème, supprimez le nom de la table ou utilisez un alias de colonne.

Exemple d'erreur

Voici un exemple de code qui génère l'erreur :

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

Résultat :

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

Ici, j'ai essayé de classer les résultats par le TeacherName colonne, mais j'ai qualifié cette colonne avec le nom de la table (j'ai utilisé Teachers.TeacherName pour référencer le nom de la colonne).

MySQL n'autorise pas les tables à être référencées de cette manière lors de la commande des résultats d'un UNION opération.

Solution 1

Une façon de résoudre ce problème consiste à supprimer le nom de la table du ORDER BY clause :

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

Résultat :

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

Solution 2

Si l'option précédente ne convient pas, une autre façon de résoudre le problème consiste à utiliser un alias. En d'autres termes, affectez un alias à la colonne, puis référencez cet alias dans le ORDER BY clause :

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

Résultat :

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