sql >> Databáze >  >> RDS >> MariaDB

Oprava „ERROR 1250 (42000):Tabulku „…“ z jednoho z SELECT nelze použít v klauzuli ORDER“ v MariaDB

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.


  1. Používáte správné nástroje pro sledování výkonu databáze?

  2. Spočítejte výskyty DISTINCT hodnot

  3. jak nahradit více řetězců dohromady v Oracle

  4. Jak ladit překročení časového limitu čekání na zámek na MySQL?