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

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

Når du bruger PostgreSQL's INTERSECT operatør, hvis du støder på en fejl, der lyder "FEJL:hver INTERSECT-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 INTERSECT operatør.

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
INTERSECT
SELECT StudentId, StudentName FROM Students;

Resultat:

ERROR:  each INTERSECT 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
INTERSECT
SELECT StudentName FROM Students;

Resultat:

 teachername 
-------------
 Bill
 Warren

En anden mulighed er at tilføje den relevante kolonne til den første SELECT erklæring:

SELECT TeacherId, TeacherName FROM Teachers
INTERSECT
SELECT StudentId, StudentName FROM Students;

Resultat:

 teacherid | teachername 
-----------+-------------
         6 | Bill

Som dette eksempel viser, kan forskellige rækker returneres afhængigt af hvilken mulighed du vælger.

Vi kan også bruge INTERSECT ALL , som inkluderer duplikerede værdier:

SELECT TeacherId, TeacherName FROM Teachers
INTERSECT ALL
SELECT StudentId, StudentName FROM Students;

Resultat:

 teacherid | teachername 
-----------+-------------
         6 | Bill

Dette kan også returnere de samme eller forskellige resultater, afhængigt af dataene.


  1. SQLite Undtagen

  2. Record returneret fra funktion har kolonner sammenkædet

  3. mySQL underforespørgsel grænse

  4. Prag PostgreSQL Developer Day 2016