SQLiteでは、UNION
演算子は複合SELECT
を作成します 左右のSELECT
の結果を返すステートメント ステートメント。つまり、2つのクエリの結果を1つの結果セットに結合します。
次のテーブルがあるとします。
SELECT * FROM Teachers;
SELECT * FROM Students;
結果:
TeacherId TeacherName --------- ----------- 1 Warren 2 Ben 3 Cathy 4 Cathy 5 Bill 6 Bill StudentId StudentName --------- ----------- 1 Faye 2 Jet 3 Spike 4 Ein 5 Warren 6 Bill
UNION
を使用できます すべての教師と生徒を返却するオペレーター:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
結果:
TeacherName ----------- Ben Bill Cathy Ein Faye Jet Spike Warren
デフォルトでは、UNION
演算子は暗黙的にDISTINCT
を適用します 手術。つまり、デフォルトでは個別の値のみを返します。したがって、上記の結果には、ウォーレン、キャシー、ビルがそれぞれ1つずつ含まれています。これは、結合されたテーブルに実際に2つのウォーレン、2つのキャシー、および3つのビルが含まれているという事実にもかかわらずです(キャシーと呼ばれる2人の教師、ウォーレンと呼ばれる教師と顧客、およびビルと呼ばれる2人、およびビルと呼ばれる1人の学生がいます)。
ALL
を使用できます 結果に重複する値を含めるキーワード:
SELECT TeacherName FROM Teachers
UNION ALL
SELECT StudentName FROM Students;
結果:
TeacherName ----------- Warren Ben Cathy Cathy Bill Bill Faye Jet Spike Ein Warren Bill
今回は、最初の例で取得した8行ではなく、12行を取得しました。
キャシーの両方が返還され、3つの請求書すべてが返還されたことがわかります。