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

Oprava „ERROR 1054 (42S22):Neznámý sloupec „colname“ v „klauzuli objednávky“ v MariaDB

Pokud se vám zobrazuje chyba „ERROR 1054 (42S22):Neznámý sloupec ‘colname’ v ‘klauzuli objednávky’ ” v MariaDB se může stát, že se pokoušíte odkazovat na aliasový sloupec jeho názvem.

Toto je běžná chyba při spouštění dotazů, které spojují dvě nebo více tabulek. Může k tomu také dojít při použití operátorů, jako je UNION , INTERSECT a EXCEPT .

Obecně platí, že pokud má sloupec alias, musíte tento alias použít v každém ORDER BY klauzule, která na tento sloupec odkazuje.

Chcete-li chybu opravit, jednoduše odkazujte na sloupec jeho aliasem.

Alternativně můžete alias odstranit úplně a odkazovat přímo na název sloupce.

Příklad chyby

Zde je příklad kódu, který způsobuje chybu:

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

Výsledek:

ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'

Zde jsem nepoužil alias v ORDER BY klauzule, která vedla k chybě.

Řešení 1

Jedním ze způsobů, jak tento problém vyřešit, je použít alias v ORDER BY klauzule:

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

Výsledek:

+-------+
| t     |
+-------+
| Ben   |
| Cathy |
+-------+

V tomto případě se alias stane záhlavím sloupce ve výsledku.

Řešení 2

Dalším způsobem, jak to udělat, je odstranit alias úplně:

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

Výsledek:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Cathy       |
+-------------+

Tentokrát se název sloupce stane záhlavím sloupce.


  1. Oracle číslo na C# desítkové

  2. Čítač přírůstků MySQL SELECT

  3. Deset hlavních důvodů pro migraci z Oracle na PostgreSQL

  4. SWITCHOFFSET() Příklady v SQL Server