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

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

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

Тази грешка възниква, когато броят на колоните, върнати от всеки SELECT твърдението е различно.

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

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

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

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

Резултат:

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

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

Решение

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

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

SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;

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

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

Важно е да се отбележи, че можете да получите различни резултати в зависимост от това коя опция изберете. Това е така, защото UNION връща различни редове по подразбиране. Когато добавим друга колона, има възможност един по-рано дублиран ред да стане уникален ред, в зависимост от стойността в допълнителната колона.

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

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

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Експертно ръководство за Slony репликация за PostgreSQL

  2. Заявката на Postgres за проверка на низ е число

  3. Как Acosd() работи в PostgreSQL

  4. Да се ​​използва ли имейл адресът като основен ключ?

  5. Използване на jsonb_set() за актуализиране на конкретна стойност на jsonb масив