SQLite UNION 句
SQLiteのUNION句/演算子は、2つ以上のSELECT文の結果を結合するために使用され、重複する行は返しません。
UNIONを使用するには、各SELECTで選択される列の数が同じである必要があり、列式の数が同じで、データ型が同じで、同じ順序であることを確認する必要があります。ただし、列の長さが同じである必要はありません。
構文
UNIONの基本構文は次のとおりです。
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
ここで指定する条件は、必要に応じて任意の式にできます。
例
次の2つのテーブルがあるとします。(1) COMPANY テーブルは次のようになります。
sqlite> select * from COMPANY; ID NAME AGE ADDRESS SALARY ---------- -------------------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
(2) もう1つのテーブルは DEPARTMENT で、次のようになります。
ID DEPT EMP_ID ---------- -------------------- ---------- 1 IT Billing 1 2 Engineering 2 3 Finance 7 4 Engineering 3 5 Finance 4 6 Engineering 5 7 Finance 6
では、SELECT文とUNION句を使用して2つのテーブルを結合してみましょう。次のようになります。
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID
UNION
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
これにより、次の結果が生成されます。
EMP_ID NAME DEPT ---------- -------------------- ---------- 1 Paul IT Billing 2 Allen Engineerin 3 Teddy Engineerin 4 Mark Finance 5 David Engineerin 6 Kim Finance 7 James Finance
UNION ALL 句
UNION ALL 演算子は、2つのSELECT文の結果を結合するために使用され、重複する行も含みます。
UNIONに適用される規則は、UNION ALL演算子にも同様に適用されます。
構文
UNION ALLの基本構文は次のとおりです。
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION ALL SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
ここで指定する条件は、必要に応じて任意の式にできます。
例
では、SELECT文とUNION ALL句を使用して2つのテーブルを結合してみましょう。次のようになります。
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID
UNION ALL
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
これにより、次の結果が生成されます。
EMP_ID NAME DEPT ---------- -------------------- ---------- 1 Paul IT Billing 2 Allen Engineerin 3 Teddy Engineerin 4 Mark Finance 5 David Engineerin 6 Kim Finance 7 James Finance 1 Paul IT Billing 2 Allen Engineerin 3 Teddy Engineerin 4 Mark Finance 5 David Engineerin 6 Kim Finance 7 James Financeその他の拡張