Quando si utilizza UNION operatore in MariaDB, potresti riscontrare il seguente errore:"ERRORE 1222 (21000):le istruzioni SELECT utilizzate hanno un numero diverso di colonne".
Questo errore si verifica quando il numero di colonne restituito da ogni SELECT l'affermazione è diversa.
Il modo per risolvere questo problema è assicurarsi che entrambi SELECT le istruzioni restituiscono lo stesso numero di colonne.
Esempio di errore
Ecco un esempio di codice che produce l'errore:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students; Risultato:
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Qui, il primo SELECT l'istruzione restituisce una colonna (TeacherName ), ma il secondo SELECT l'istruzione restituisce due colonne (StudentId e StudentName ).
Soluzione
La soluzione è garantire entrambi SELECT le istruzioni restituiscono lo stesso numero di colonne
Quindi, usando l'esempio sopra, possiamo rimuovere la colonna extra dal nostro secondo SELECT dichiarazione:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Oppure possiamo aggiungere un'altra colonna al primo SELECT dichiarazione:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Tieni presente che puoi ottenere risultati diversi a seconda dell'opzione che scegli. Questo perché UNION restituisce righe distinte per impostazione predefinita. Quando aggiungiamo un'altra colonna, c'è la possibilità che una riga precedentemente duplicata ora diventi una riga univoca, a seconda del valore nella colonna extra.
Possiamo anche usare UNION ALL , che restituisce valori duplicati:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students; Questo potrebbe anche restituire risultati diversi per gli altri esempi.