Sqlite-unions-clause
提供:Dev Guides
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つのテーブル、(a)link:/sqlite/company.sql [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
(b)別のテーブルはlink:/sqlite/department.sql [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
次のように、UNION句とともにSELECTステートメントを使用してこれらの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 Engineering
3 Teddy Engineering
4 Mark Finance
5 David Engineering
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ステートメントで上記の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 Engineering
3 Teddy Engineering
4 Mark Finance
5 David Engineering
6 Kim Finance
7 James Finance
1 Paul IT Billing
2 Allen Engineering
3 Teddy Engineering
4 Mark Finance
5 David Engineering
6 Kim Finance
7 James Finance