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.