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

Коригирайте „ГРЕШКА:  всяка заявка ИЗКЛЮЧЕН трябва да има същия брой колони“ в PostgreSQL

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

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

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

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

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

Резултат:

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

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

Решение

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

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

SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentName FROM Students; 

Резултат:

 име на учителя ------------- Кати Бен

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

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

Резултат:

<пред> учителски | име на учител -----------+------------ 3 | Кати 4 | Кати 1 | Уорън 5 | Билет 2 | Бен

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

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

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

Резултат:

<пред> учителски | име на учител -----------+------------ 3 | Кати 4 | Кати 1 | Уорън 5 | Билет 2 | Бен

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Големи данни с PostgreSQL и Apache Spark

  2. Име на таблица като параметър на функцията на PostgreSQL

  3. Създайте postgres docker контейнер с първоначална схема

  4. ГРЕШКА:функциите в индексния израз трябва да бъдат маркирани като НЕИЗМЕНИМИ в Postgres

  5. алтернатива на mysql_insert_id за postgresql