sql >> Database >  >> RDS >> MariaDB

Fix "ERROR 1250 (42000):Tabel '...' van een van de SELECT's kan niet worden gebruikt in de ORDER-clausule" in MariaDB

Als u "ERROR 1250 (42000):Tabel '...' van een van de SELECT's kan niet worden gebruikt in de ORDER-component" krijgt, komt dat waarschijnlijk omdat u een kolomnaam kwalificeert met de tabelnaam wanneer u een operator gebruikt zoals UNION , INTERSECT , of EXCEPT in MariaDB.

Om dit op te lossen, verwijdert u de tabelnaam of gebruikt u een kolomalias.

Voorbeeld van fout

Hier is een voorbeeld van code die de fout veroorzaakt:

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

Resultaat:

ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in ORDER clause

In dit geval heb ik geprobeerd de resultaten te ordenen op TeacherName kolom, maar ik heb die kolom gekwalificeerd met de tabelnaam (ik gebruikte Teachers.TeacherName om naar de kolomnaam te verwijzen).

Verwijzen naar tabellen als deze werkt niet bij het bestellen van de resultaten van een UNION operatie in MariaDB. Hetzelfde geldt voor het bestellen van resultaten van de INTERSECT operator en de EXCEPT telefoniste.

Oplossing 1

Een manier om dit probleem op te lossen is door de tabelnaam te verwijderen uit de ORDER BY clausule:

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

Oplossing 2

Een andere manier om dit op te lossen is door een alias voor de kolom te gebruiken:

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

Met deze optie wijzen we een alias toe aan de kolom en verwijzen we vervolgens naar die alias in de ORDER BY clausule.


  1. CONVERTEREN() in SQL Server

  2. Tekens in reeksen tellen via SQL

  3. SQL Server Bulk Insert – Deel 1

  4. Hoe Setseed() werkt in PostgreSQL