sql >> Databasteknik >  >> RDS >> MariaDB

Fix "ERROR 1250 (42000):Tabell '...' från en av SELECT:erna kan inte användas i ORDER-satsen" i MariaDB

Om du får "ERROR 1250 (42000):Tabell '...' från en av SELECTs kan inte användas i ORDER-satsen", beror det förmodligen på att du kvalificerar ett kolumnnamn med dess tabellnamn när du använder en operator som UNION , INTERSECT , eller EXCEPT i MariaDB.

För att åtgärda detta, ta antingen bort tabellnamnet eller använd ett kolumnalias.

Exempel på fel

Här är ett exempel på kod som ger felet:

(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 det här fallet försökte jag sortera resultaten efter TeacherName kolumnen, men jag kvalificerade den kolumnen med tabellnamnet (jag använde Teachers.TeacherName för att referera till kolumnnamnet).

Referenstabeller som denna fungerar inte när du beställer resultaten av en UNION drift i MariaDB. Detsamma gäller när du beställer resultat av INTERSECT operatorn och EXCEPT operatör.

Lösning 1

Ett sätt att åtgärda problemet är att ta bort tabellnamnet från ORDER BY klausul:

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

Lösning 2

Ett annat sätt att fixa det är att använda ett alias för kolumnen:

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

Med det här alternativet tilldelar vi kolumnen ett alias och hänvisar sedan till det aliaset i ORDER BY klausul.


  1. Kan inte öppna användarens standarddatabas. Inloggningen misslyckades. efter installation av SQL Server Management Studio Express

  2. flera frågor samma tabell men i olika kolumner mysql

  3. Hur man aktiverar bulkbehörighet i SQL Server

  4. SQL Server 2008 Tom sträng mot utrymme