sql >> Database teknologi >  >> RDS >> PostgreSQL

Ret "FEJL: hver UNION-forespørgsel skal have det samme antal kolonner" i PostgreSQL

Når du bruger UNION operator i PostgreSQL, hvis du støder på en fejl, der lyder "FEJL:hver UNION-forespørgsel skal have det samme antal kolonner ", det er fordi der er et misforhold i antallet af kolonner, der returneres af forespørgslerne på hver side af UNION operatør.

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:  each UNION query must have the same number of columns
LINE 3: SELECT StudentId, StudentName FROM Students;

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

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;

Det er vigtigt at bemærke, 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 kan også returnere forskellige resultater til de andre eksempler.


  1. 10 Microsoft Access Navigationsrude Tastaturgenveje

  2. MySQL kommandolinjeformatering med UTF8

  3. 6 sjove fakta om Microsoft, som du sandsynligvis ikke kender!

  4. SQL Server Konverter heltal til binær streng