PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Поправете „ГРЕШКА:всяка заявка INTERSECT трябва да има същия брой колони“ в PostgreSQL

Когато използвате INTERSECT на PostgreSQL оператор, ако срещнете грешка, която гласи „ГРЕШКА:всяка заявка INTERSECT трябва да има същия брой колони “, защото има несъответствие в броя на колоните, върнати от заявките от двете страни на INTERSECT оператор.

Начинът да поправите това е да се уверите, че и двете SELECT операторите връщат същия брой колони.

Пример за грешка

Ето пример за код, който създава грешката:

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

Резултат:

ГРЕШКА:всяка заявка INTERSECT трябва да има еднакъв брой колони ЛИНИЯ 3:ИЗБЕРЕТЕ StudentId, StudentName FROM Students;

Тук първият SELECT оператор връща една колона (TeacherName ), но вторият SELECT оператор връща две колони (StudentId и StudentName ).

Решение

Решението е да се гарантира и двете SELECT операторите връщат същия брой колони

Използвайки горния пример, можем да премахнем допълнителната колона от нашия втори SELECT изявление:

SELECT TeacherName FROM Teachers
INTERSECT
SELECT StudentName FROM Students; 

Резултат:

 име на учителя ------------- Бил Уорън

Друга възможност е да добавите съответната колона към първия SELECT изявление:

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

Резултат:

<пред> учителски | име на учител -----------+------------ 6 | Бил

Както показва този пример, различни редове могат да бъдат върнати в зависимост от това коя опция изберете.

Можем също да използваме INTERSECT ALL , което включва дублиращи се стойности:

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

Резултат:

<пред> учителски | име на учител -----------+------------ 6 | Бил

Това може също да върне същите или различни резултати, в зависимост от данните.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PG::InvalidParameterValue:ГРЕШКА:невалидна стойност за параметър client_min_messages:паника

  2. Има ли начин да деактивирате претоварването на функциите в Postgres

  3. Анотацията на Spring Data @CreatedDate не работи за мен

  4. Как да профилирате PostgreSQL база данни?

  5. Мога ли да върна обратно транзакция, която вече съм ангажирал? (загуба на данни)