sql >> データベース >  >> RDS >> SQLite

SQLiteUNIONオペレーター

    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つの請求書すべてが返還されたことがわかります。


    1. 1970年より前の日付にstrtotimeを使用する

    2. Struts2をHibernateおよびPostgreSQLと接続する方法

    3. タイムゾーンのOracle日付フォーマットマスクとは何ですか?

    4. SQLステートメントを引数可能にする理由は何ですか?