Při použití UNION operátora v MariaDB, můžete narazit na následující chybu:„CHYBA 1222 (21000):Použité příkazy SELECT mají jiný počet sloupců“.
K této chybě dochází při počtu sloupců vrácených každým SELECT prohlášení je jiné.
Způsob, jak to vyřešit, je zajistit, aby obě SELECT příkazy vrátí stejný počet sloupců.
Příklad chyby
Zde je příklad kódu, který způsobuje chybu:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students; Výsledek:
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Zde je první SELECT příkaz vrátí jeden sloupec (TeacherName ), ale druhý SELECT příkaz vrátí dva sloupce (StudentId a StudentName ).
Řešení
Řešením je zajistit jak SELECT příkazy vrátí stejný počet sloupců
Takže pomocí výše uvedeného příkladu můžeme buď odstranit nadbytečný sloupec z našeho druhého SELECT prohlášení:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Nebo můžeme přidat další sloupec do prvního SELECT prohlášení:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Mějte na paměti, že můžete získat různé výsledky v závislosti na tom, kterou možnost zvolíte. Důvodem je UNION ve výchozím nastavení vrací odlišné řádky. Když přidáme další sloupec, existuje možnost, že z dříve duplicitního řádku se nyní stane jedinečný řádek v závislosti na hodnotě ve sloupci navíc.
Můžeme také použít UNION ALL , který vrací duplicitní hodnoty:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students; To by také mohlo vrátit jiné výsledky k jiným příkladům.