sql >> Database >  >> RDS >> Mysql

Fix "ERROR 1054 (42S22):Onbekende kolom '...' in 'bestellingsclausule' bij gebruik van UNION in MySQL

Als u de fout "1054 (42S22):Onbekende kolom '...' in 'bestellingsclausule'" krijgt bij gebruik van de UNION clausule in MySQL, kan het zijn dat u probeert te verwijzen naar een gealiaste kolom met de kolomnaam.

Bij gebruik van de UNION clausule in MySQL, als een kolom een ​​alias heeft, moet u die alias gebruiken in een ORDER BY clausule die naar die kolom verwijst.

Dus om de fout op te lossen, moet u naar de kolom verwijzen met zijn alias. U kunt ook de alias 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)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Resultaat:

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

Hier heb ik geprobeerd de resultaten te ordenen op TeacherName kolom, maar die kolom heeft een alias. Het feit dat ik de alias niet heb gebruikt in de ORDER BY clausule was genoeg om de fout te produceren.

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)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Resultaat:

+--------+
| t      |
+--------+
| Ben    |
| Bill   |
| Cathy  |
| Ein    |
| Faye   |
| Jet    |
| Spike  |
| Warren |
+--------+

Dat loste het probleem op.

Oplossing 2

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

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

Resultaat:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Bill        |
| Cathy       |
| Ein         |
| Faye        |
| Jet         |
| Spike       |
| Warren      |
+-------------+

  1. SQL Server Database Back-up Encryptie

  2. Hoe PostgreSQL op macOS te installeren

  3. De verschillende beperkingen in SQL Server verkennen

  4. Hoe ongeldige (corrupte) waarden te identificeren die zijn opgeslagen in Oracle DATE-kolommen?