JOIN
とはどう違いUNION
ますか?例がありますか?
14 に答える
UNION
クエリからの行を互いにJOIN
並べ、デカルト積を作成してそれをサブセット化します。まったく異なる操作です。の些細な例UNION
:
mysql> SELECT 23 AS bah
-> UNION
-> SELECT 45 AS bah;
+-----+
| bah |
+-----+
| 23 |
| 45 |
+-----+
2 rows in set (0.00 sec)
同様に些細な例JOIN
:
mysql> SELECT * FROM
-> (SELECT 23 AS bah) AS foo
-> JOIN
-> (SELECT 45 AS bah) AS bar
-> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
| 23 | 45 |
+-----+-----+
1 row in set (0.01 sec)
加入:
結合は、異なるテーブルの同じ名前または異なる名前の列を表示するために使用されます。表示される出力には、すべての列が個別に表示されます。つまり、列は互いに隣り合わせに配置されます。
連合:
UNION セット演算子は、同じデータ型の列を持つ 2 つのテーブルのデータを結合するために使用されます。UNION が実行されると、両方のテーブルのデータが同じデータ型を持つ単一の列に収集されます。
例えば:
以下に示す 2 つの表を参照してください。
Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG
JOIN タイプを実行するためのクエリを以下に示します。
SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);
articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG
それがジョインです。
UNION は、同じ量とタイプの列を持つテーブルまたは結果セットが必要であり、これを一緒にテーブル/結果セットに追加することを意味します。この例を見てください:
Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4
SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007
articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4
結合と共用体を使用して、1 つ以上のテーブルのデータを組み合わせることができます。違いは、データの結合方法にあります。
簡単に言えば、結合はデータを新しい列に結合します。2 つのテーブルが結合されている場合、最初のテーブルのデータは、同じ行の 2 番目のテーブルの列と並んで列の 1 つのセットに表示されます。
ユニオンは、データを新しい行に結合します。2 つのテーブルが結合されている場合、最初のテーブルのデータは 1 つの行セットにあり、2 番目のテーブルのデータは別のセットにあります。行は同じ結果になります。
ユニオンは結果をマージすることを覚えておいてください(確かにSQL Server)(機能またはバグ?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
ID、値
1,3
select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id
ID,値,ID,値
1,3,1,3
抽象的には、2 つのテーブルまたは結果セットが結合されているという点で似ていますが、UNION は実際には結果セットを同じ NUMBER OF COLUMNS と COLUMNS HAVING SIMILAR DATA TYPES と結合するためのものです。STRUCTURE は同じで、新しい行のみが追加されています。
結合では、テーブル/結果セットを可能な構造と組み合わせることができます。これには、共有/類似の列がないデカルト結合が含まれます。