UNION
を使用する場合 MariaDBの演算子を使用すると、次のエラーが発生する場合があります。「エラー1222(21000):使用されているSELECTステートメントの列数が異なります」。
このエラーは、各SELECT
によって返される列の数が発生した場合に発生します。 ステートメントが異なります。
これを修正する方法は、両方のSELECT
を確認することです。 ステートメントは同じ数の列を返します。
エラーを生成するコードの例を次に示します。
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
結果:
ERROR 1222 (21000): The used SELECT statements have a different number of columns
ここでは、最初のSELECT
ステートメントは1つの列を返します(TeacherName
)、ただし2番目のSELECT
ステートメントは2つの列を返します(StudentId
およびStudentName
。
解決策は、両方のSELECT
を確認することです ステートメントは同じ数の列を返します
したがって、上記の例を使用すると、2番目のSELECT
から余分な列を削除できます。 ステートメント:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
または、最初のSELECT
に別の列を追加することもできます ステートメント:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
選択したオプションによって、異なる結果が得られる可能性があることに注意してください。これは、UNION
デフォルトで個別の行を返します。別の列を追加すると、追加の列の値によっては、以前に複製された行が一意の行になる可能性があります。
UNION ALL
も使用できます 、重複する値を返します:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students;
これにより、他の例とは異なる結果が返される可能性もあります。