sql >> Databasteknik >  >> RDS >> Mysql

Fixa "ERROR 1250 (42000):Tabell '...' från en av SELECT:erna kan inte användas i global ORDER-sats" när du använder UNION i MySQL

Om du får ett felmeddelande som lyder "ERROR 1250 (42000):Tabell '...' från en av SELECTs kan inte användas i global ORDER-sats" när du använder UNION klausul i en MySQL-fråga beror det förmodligen på att du kvalificerar ett kolumnnamn med dess tabellnamn.

Detta fungerar inte i MySQL.

För att åtgärda problemet, 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 global ORDER clause

Här 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).

MySQL tillåter inte att tabeller refereras på detta sätt när resultaten av en UNION beställs operation.

Lösning 1

Ett sätt att fixa detta är att ta bort tabellnamnet från 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

Om det tidigare alternativet inte är lämpligt är ett annat sätt att lösa problemet att använda ett alias. Med andra ord, tilldela ett alias till kolumnen och referera sedan till det aliaset 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. Vad är MariaDB? Hur fungerar MariaDB?

  2. Hur kan jag generera en unik sträng per post i en tabell i Postgres?

  3. SQL Server List Tabeller:Hur man visar alla tabeller

  4. Vilket är snabbast? VÄLJ SQL_CALC_FOUND_ROWS FRÅN "tabell", eller VÄLJ ANTAL(*)