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

Коригиране на грешка:„Избиранията отляво и отдясно на UNION нямат същия брой колони с резултати“ в SQLite

Ако получавате „Грешка:при подготовката, SELECTs отляво и отдясно на UNION нямат същия брой колони с резултати...“, когато се опитвате да използвате UNION оператор в SQLite, това е защото един от SELECT инструкциите връщат повече колони от другите.

Когато използвате UNION оператор, и двата SELECT операторите трябва да връщат същия брой колони.

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

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

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

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

Резултат:

Грешка:при подготовката, SELECT вляво и вдясно от UNION нямат същия брой колони с резултати (1)

Тук първият 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; 

Резултат:

TeacherId TeacherName--------------- -----------1 Фей 1 Уорън 2 Бен 2 Джет 3 Кати 3 Спайк 4 Кати 4 Ейн 5 Бил 5 Уорън 6 Бил 

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

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

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

Резултат:

TeacherId TeacherName--------------- -----------1 Warren 2 Ben 3 Cathy 4 Cathy 5 Bill 6 Bill 1 Faye 2 Jet 3 Spike 4 Ein 5 Warren 6 Bill  
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. в SQLite

  2. Как да използвате ROW_NUMBER в sqlite

  3. SQLite заявка:да получите всички колони на ред (android)?

  4. 2 начина за активиране на пренасяне на думи в SQLite

  5. Как работи Coalesce() в SQLite