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

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

Si vous obtenez "ERROR 1250 (42000):La table '...' de l'un des SELECT ne peut pas être utilisée dans la clause ORDER", c'est probablement parce que vous qualifiez un nom de colonne avec son nom de table lorsque vous utilisez un opérateur tel que UNION , INTERSECT , ou EXCEPT dans MariaDB.

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 ORDER clause

Dans ce cas, 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).

Le référencement de tableaux comme celui-ci ne fonctionne pas lors de la commande des résultats d'un UNION opération dans MariaDB. Il en va de même lors de la commande des résultats de l'INTERSECT opérateur et le EXCEPT opérateur.

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;

Solution 2

Une autre façon de résoudre ce problème consiste à utiliser un alias pour la colonne :

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

Avec cette option, nous attribuons un alias à la colonne, puis référençons cet alias dans le ORDER BY clause.