sql >> Database >  >> RDS >> MariaDB

Fix "ERROR 1054 (42S22):Onbekende kolom 'colname' in 'orderclausule' in MariaDB

Als u de foutmelding "ERROR 1054 (42S22):Onbekende kolom 'colname' in 'orderclausule' krijgt ” in MariaDB, kan het zijn dat u probeert te verwijzen naar een gealiaste kolom met de kolomnaam.

Dit is een veelvoorkomende fout bij het uitvoeren van query's die twee of meer tabellen samenvoegen. Het kan ook gebeuren bij het gebruik van operators zoals UNION , INTERSECT , en EXCEPT .

Als een kolom een ​​alias heeft, moet u die alias over het algemeen gebruiken in een ORDER BY clausule die naar die kolom verwijst.

Om de fout op te lossen, verwijst u eenvoudig naar de kolom met zijn alias.

U kunt ook de alias helemaal verwijderen en rechtstreeks naar de kolomnaam verwijzen.

Voorbeeld van fout

Hier is een voorbeeld van code die de fout veroorzaakt:

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

Resultaat:

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

Hier heb ik de alias niet gebruikt in de ORDER BY clausule die in de fout resulteerde.

Oplossing 1

Een manier om dit probleem op te lossen is door de alias te gebruiken in de ORDER BY clausule:

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

Resultaat:

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

In dit geval wordt de alias de kolomkop in het resultaat.

Oplossing 2

Een andere manier om dit te doen is door de alias helemaal te verwijderen:

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

Resultaat:

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

Deze keer wordt de kolomnaam de kolomkop.


  1. SQLT in 12c kan geen statistieken verzamelen

  2. Blob in Oracle-database invoegen met C#

  3. PDO laat de laatste ID invoegen

  4. MySQL onjuist sleutelbestand voor tmp-tabel bij het maken van meerdere joins