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

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

Podczas korzystania z UNION operatora w PostgreSQL, jeśli napotkasz błąd o treści „BŁĄD:każde zapytanie UNION musi mieć taką samą liczbę kolumn „, to dlatego, że występuje niezgodność w liczbie kolumn zwracanych przez zapytania po obu stronach UNION operator.

Ten błąd występuje, gdy liczba kolumn zwrócona przez każdy SELECT oświadczenie jest inne.

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

Wynik:

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

Lub możemy dodać kolejną kolumnę do pierwszego SELECT oświadczenie:

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

Ważne jest, aby pamiętać, że możesz uzyskać różne wyniki w zależności od wybranej opcji. Dzieje się tak, ponieważ UNION domyślnie zwraca różne wiersze. Kiedy dodamy kolejną kolumnę, istnieje możliwość, że poprzednio zduplikowany wiersz stanie się teraz unikalnym wierszem, w zależności od wartości w dodatkowej kolumnie.

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

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

Może to również zwrócić inne wyniki w innych przykładach.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcje PL/pgSQL:Jak zwrócić normalną tabelę z wieloma kolumnami za pomocą instrukcji execute?

  2. Jak zmienić typ kolumny w Heroku?

  3. Jak działa funkcja Sign() w PostgreSQL

  4. Jak się dowiedzieć, która partycja będzie używana w partycjonowaniu mieszającym Postgresa?

  5. Używanie Kubernetes do wdrażania PostgreSQL