UNION
を使用しようとすると、「エラー:準備中に、UNIONの左右のSELECTに同じ数の結果列がありません…」というメッセージが表示されます。 SQLiteの演算子、これはSELECT
の1つが原因です ステートメントは他のステートメントよりも多くの列を返しています。
UNION
を使用する場合 演算子、両方SELECT
ステートメントは同じ数の列を返す必要があります。
この問題を修正するには、SELECT
を確認してください ステートメントは同じ数の列を返します。
エラーを生成するSQLコードの例を次に示します。
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
結果:
Error: in prepare, SELECTs to the left and right of UNION do not have the same number of result columns (1)
ここでは、最初のSELECT
ステートメントは1つの列を返します(TeacherName
)、ただし2番目のSELECT
ステートメントは2つの列を返します(StudentId
およびStudentName
。
この問題を修正する方法は、両方のSELECT
を確認することです。 ステートメントは同じ数の列を返します
したがって、上記の例を使用すると、2番目のSELECT
から余分な列を削除できます。 ステートメント:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
結果:
TeacherName ----------- Ben Bill Cathy Ein Faye Jet Spike Warren
または、最初のSELECT
に別の列を追加することもできます ステートメント:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
結果:
TeacherId TeacherName --------- ----------- 1 Faye 1 Warren 2 Ben 2 Jet 3 Cathy 3 Spike 4 Cathy 4 Ein 5 Bill 5 Warren 6 Bill>
選択したオプションに応じて、異なる結果が得られる可能性があることに注意してください。これは、UNION
デフォルトで個別の行を返します。別の列を追加すると、追加の列の値によっては、以前に複製された行が一意の行になる可能性があります。
UNION ALL
も使用できます 、重複する値を返します:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students;
結果:
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