sql >> Databasteknik >  >> RDS >> SQLite

Åtgärda fel:"SELECTs till vänster och höger om UNION har inte samma antal resultatkolumner" i SQLite

Om du får "Error:in prepare, SELECTs till vänster och höger om UNION har inte samma antal resultatkolumner..." när du försöker använda UNION operatorn i SQLite, beror det på att en av SELECT uttalanden returnerar fler kolumner än de andra.

När du använder UNION operator, båda SELECT satser måste returnera samma antal kolumner.

För att åtgärda det här problemet, se till att SELECT satser returnerar samma antal kolumner.

Exempel på fel

Här är ett exempel på SQL-kod som ger felet:

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

Resultat:

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

Här är den första SELECT uttalande returnerar en kolumn (TeacherName ), men den andra SELECT uttalande returnerar två kolumner (StudentId och StudentName ).

Lösning

Sättet att åtgärda problemet är att säkerställa både SELECT satser returnerar samma antal kolumner

Så med exemplet ovan kan vi antingen ta bort den extra kolumnen från vår andra SELECT uttalande:

SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;

Resultat:

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

Eller så kan vi lägga till ytterligare en kolumn till den första SELECT uttalande:

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

Resultat:

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

Tänk på att du kan få olika resultat beroende på vilket alternativ du väljer. Detta beror på att UNION returnerar distinkta rader som standard. När vi lägger till ytterligare en kolumn finns det en möjlighet att en tidigare duplicerad rad nu blir en unik rad, beroende på värdet i den extra kolumnen.

Vi kan också använda UNION ALL , som returnerar dubbletter av värden:

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

Resultat:

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. Hur hittar man tredje eller nᵗʰ högsta lön från lönetabellen?

  2. Hur man beräknar median i PostgreSQL

  3. Hur får man radräkning i sqlite med Android?

  4. PL/SQL-program för att ta bort posterna från tabellen