PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Napraw „BŁĄD:każde zapytanie Z WYJĄTKIEM musi mieć taką samą liczbę kolumn” w PostgreSQL

Używając EXCEPT PostgreSQLa operatora, jeśli napotkasz błąd o treści „BŁĄD:każde zapytanie Z WYJĄTKIEM musi mieć taką samą liczbę kolumn „, to dlatego, że występuje niezgodność w liczbie kolumn zwracanych przez zapytania po obu stronach EXCEPT operator.

Sposobem na naprawienie tego jest upewnienie się, że obie opcje SELECT oświadczenia zwracają tę samą liczbę kolumn.

Przykład błędu

Oto przykład kodu, który generuje błąd:

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

Wynik:

ERROR:  each EXCEPT query must have the same number of columns
LINE 3: SELECT StudentId, StudentName FROM Students;

Tutaj pierwszy SELECT instrukcja zwraca jedną kolumnę (TeacherName ), ale drugi SELECT instrukcja zwraca dwie kolumny (StudentId i StudentName ).

Rozwiązanie

Rozwiązaniem jest zapewnienie obu opcji SELECT oświadczenia zwracają tę samą liczbę kolumn

Korzystając z powyższego przykładu, możemy usunąć dodatkową kolumnę z naszego drugiego SELECT oświadczenie:

SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentName FROM Students;

Wynik:

 teachername 
-------------
 Cathy
 Ben

Inną opcją jest dodanie odpowiedniej kolumny do pierwszego SELECT oświadczenie:

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

Wynik:

 teacherid | teachername 
-----------+-------------
         3 | Cathy
         4 | Cathy
         1 | Warren
         5 | Bill
         2 | Ben

Jak pokazuje ten przykład, w zależności od wybranej opcji mogą zostać zwrócone różne wiersze.

Możemy również użyć EXCEPT ALL , który zwraca zduplikowane wartości:

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

Wynik:

 teacherid | teachername 
-----------+-------------
         3 | Cathy
         4 | Cathy
         1 | Warren
         5 | Bill
         2 | Ben

Może to również zwrócić te same lub różne wyniki, w zależności od danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Eksportuj określone wiersze z tabeli PostgreSQL jako skrypt INSERT SQL

  2. Zmienianie pola Enum za pomocą Alembic

  3. postgresql COUNT(DISTINCT...) bardzo wolno

  4. Zmienna tabeli PostgreSQL

  5. Zapytanie SQL, aby uzyskać wszystkie wartości, jakie może mieć wyliczenie