SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Napraw błąd:„Wybrane po lewej i prawej stronie UNION nie mają takiej samej liczby kolumn wyników” w SQLite

Jeśli otrzymujesz komunikat „Błąd:w przygotowaniu, SELECTy po lewej i prawej stronie UNION nie mają takiej samej liczby kolumn wynikowych…” podczas próby użycia UNION operator w SQLite, to dlatego, że jeden z SELECT oświadczenie zwraca więcej kolumn niż inne.

Kiedy używasz UNION operator, oba SELECT oświadczenia muszą zwracać taką samą liczbę kolumn.

Aby rozwiązać ten problem, upewnij się, że SELECT oświadczenia zwracają tę samą liczbę kolumn.

Przykład błędu

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

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

Wynik:

Error: in prepare, SELECTs to the left and right of UNION do not have the same number of result columns (1)

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

Rozwiązanie

Sposobem na rozwiązanie tego problemu jest zapewnienie obu opcji SELECT oświadczenia zwracają tę samą liczbę kolumn

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

SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;

Wynik:

TeacherName
-----------
Ben        
Bill       
Cathy      
Ein        
Faye       
Jet        
Spike      
Warren     

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

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

Wynik:

TeacherId  TeacherName
---------  -----------
1          Faye       
1          Warren     
2          Ben        
2          Jet        
3          Cathy      
3          Spike      
4          Cathy      
4          Ein        
5          Bill       
5          Warren     
6          Bill       

Pamiętaj, ż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;

Wynik:

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. Operator INTERSECT SQLite

  2. Jak działa SQLite Max()

  3. Dodaj dni do daty w SQLite

  4. Klucz obcy SQLite

  5. Android SQLite LIKE symbol wieloznaczny ucieczki