Pokud se vám zobrazuje „CHYBA 1250 (42000):Tabulku „…“ z jednoho z SELECT nelze použít v klauzuli ORDER“, je to pravděpodobně proto, že kvalifikujete název sloupce s názvem tabulky při použití operátoru jako UNION
, INTERSECT
nebo EXCEPT
v MariaDB.
Chcete-li tento problém vyřešit, odstraňte název tabulky nebo použijte alias sloupce.
Příklad chyby
Zde je příklad kódu, který způsobuje chybu:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;
Výsledek:
ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in ORDER clause
V tomto případě jsem se pokusil seřadit výsledky podle TeacherName
sloupec, ale kvalifikoval jsem tento sloupec názvem tabulky (použil jsem Teachers.TeacherName
odkazovat na název sloupce).
Referenční tabulky, jako je tato, nefungují při řazení výsledků UNION
provoz v MariaDB. Totéž platí při řazení výsledků INTERSECT
operátor a EXCEPT
operátor.
Řešení 1
Jedním ze způsobů, jak tento problém vyřešit, je odstranit název tabulky z ORDER BY
klauzule:
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Řešení 2
Dalším způsobem, jak to opravit, je použít alias pro sloupec:
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Pomocí této možnosti přiřadíme alias ke sloupci a poté na tento alias odkazujeme v ORDER BY
doložka.