sql >> Database teknologi >  >> RDS >> MariaDB

Ret "FEJL 1250 (42000):Tabel '...' fra en af ​​SELECT'erne kan ikke bruges i ORDER-klausulen" i MariaDB

Hvis du får "FEJL 1250 (42000):Tabel '...' fra en af ​​SELECT'erne kan ikke bruges i ORDER-klausulen", er det sandsynligvis fordi du kvalificerer et kolonnenavn med dets tabelnavn, når du bruger en operator såsom UNION , INTERSECT , eller EXCEPT i MariaDB.

For at rette dette 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 ORDER clause

I dette tilfælde 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).

Referencetabeller som denne virker ikke, når du bestiller resultaterne af en UNION drift i MariaDB. Det samme gælder, når du bestiller resultater af INTERSECT operatoren og EXCEPT operatør.

Løsning 1

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

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

Løsning 2

En anden måde at løse det på er at bruge et alias for kolonnen:

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

Med denne mulighed tildeler vi et alias til kolonnen og henviser derefter til dette alias i ORDER BY klausul.


  1. SQL CREATE TABLE for begyndere

  2. Databasetjenester på AWS og Oracle Cloud Platform

  3. Konverter MySql DateTime-stempel til JavaScripts Datoformat

  4. Sådan fungerer EXPORT_SET() i MariaDB