Når du bruger UNION
operatør i MariaDB, kan du støde på følgende fejl:"FEJL 1222 (21000):De brugte SELECT-sætninger har et andet antal kolonner".
Denne fejl opstår, når antallet af kolonner returneret af hver SELECT
udsagn er anderledes.
Måden at løse dette på er at sikre, at både SELECT
sætninger returnerer det samme antal kolonner.
Eksempel på fejl
Her er et eksempel på kode, der producerer fejlen:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Resultat:
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Her er den første SELECT
sætning returnerer én kolonne (TeacherName
), men den anden SELECT
sætning returnerer to kolonner (StudentId
og StudentName
).
Løsning
Løsningen er at sikre både SELECT
udsagn returnerer det samme antal kolonner
Så ved at bruge ovenstående eksempel kan vi enten fjerne den ekstra kolonne fra vores anden SELECT
erklæring:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Eller vi kan tilføje endnu en kolonne til den første SELECT
erklæring:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Vær opmærksom på, at du kan få forskellige resultater afhængigt af, hvilken mulighed du vælger. Dette er fordi UNION
returnerer adskilte rækker som standard. Når vi tilføjer endnu en kolonne, er der mulighed for, at en tidligere dublet række nu bliver en unik række, afhængigt af værdien i den ekstra kolonne.
Vi kan også bruge UNION ALL
, som returnerer duplikerede værdier:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students;
Dette kunne også returnere andre resultater til de andre eksempler.