JOIN
とUNION
はどう違いますか?例を教えてください。
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つ以上のクエリの結果を単一の結果セットに結合します。この結果セットには、共用体内のすべてのクエリに属するすべての行が含まれます。
JOIN を使用すると、テーブル間の論理的な関係に基づいて、2つ以上のテーブルからデータを取得できます。結合は、SQLがあるテーブルのデータを使用して別のテーブルの行を選択する方法を示します。
UNION操作は、2つのテーブルの列を結合するJOINを使用するのとは異なります。
UNIONの例:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
出力:
Column1 Column2
-------------------
1 2
3 4
例を結合しなさい:
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
これは、条件a.Id = b.AFKId
が真である両方のテーブルからすべての行を出力します。
結合と結合は、1つ以上のテーブルのデータを結合するために使用できます。違いは、データの結合方法にあります。
簡単に言うと、は結合データを新しい列に結合します。 2つのテーブルが結合されている場合、最初のテーブルのデータは、同じ行の2番目のテーブルの列と並んで1組の列に表示されます。
共用体は、データを新しい行に結合します。2つの表が結合されている場合、最初の表のデータは1セットの行になり、2番目の表のデータはもう一組。行は同じ結果になります。
これが参加の視覚的描写です。表Aと表Bの列は1つの結果にまとめられます。
結果の各行には、テーブルAとBの両方の列が含まれます。あるテーブルの列が別のテーブルの列と一致すると、行が作成されます。この一致は結合条件と呼ばれます。
これにより、結合は値を調べて結果に含めるために非常に役立ちます。これは通常、非正規化(逆正規化)の結果であり、あるテーブルで外部キーを使用して別のテーブルで主キーを使用して列の値を検索することを含みます。
さて、上記の描写と労働組合の描写を比較してください。共用体では、結果内の各行は一方のテーブルORからのものです。結合では、結果を作成するために列が結合されず、行が結合されます。
結合と共用体の両方を使用して、1つ以上のテーブルからのデータを単一の結果にまとめることができます。二人ともこれについては異なる方法です。結合は異なるテーブルの列を結合するために使用されますが、共用体は行を結合するために使用されます。
結合は、異なるテーブルから同じ名前または異なる名前の列を表示するために使用されます。表示される出力には、すべての列が個別に表示されます。つまり、列は互いに隣接して配置されます。
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
Unionは2つのクエリを1つのように見せます。結合は、単一のクエリステートメントで2つ以上のテーブルを調べるためのものです。
結合と共用体を使用して、1つ以上のテーブルのデータを結合できます。違いは、データの結合方法にあります。
簡単に言うと、結合はデータを新しい列に結合します。 2つのテーブルが結合されている場合、最初のテーブルのデータは、同じ行の2番目のテーブルの列と並んで1組の列に表示されます。
共用体はデータを新しい行に結合します。 2つのテーブルが「結合」されている場合、最初のテーブルのデータは1セットの行にあり、2番目のテーブルのデータは別のセットにあります。行は同じ結果になります。
ユニオンが結果をマージすることを忘れないでください( SQL Server を確認してください)(featureまたはbug?)
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
Ussing UNION
UNIONは、2つ以上のクエリの結果を単一の結果セットに結合します。この結果セットには、共用体のすべてのクエリに属するすべての行が含まれます。
UNION例: SELECT 121 AS [列1]、221 AS [列2] UNION SELECT 321 AS [列1]、422 AS [列2]
出力: コラム1コラム2 ------------------- 121 221 321 422
結合を使用する
結合すると、テーブル間の論理的な関係に基づいて、2つ以上のテーブルからデータを取得できます。
JOIN例: TblAからのa.Column1、b.Column2の選択a内部結合TblB b ON a.Id = b.id
1. SQL Joins句は、データベース内の複数のテーブルのレコードを結合するために使用されます。 JOINは、それぞれに共通の値を使用して2つのテーブルのフィールドを結合するための手段です。
2. SQL UNION演算子は、2つ以上のSELECT文の結果を結合します。 UNION内の各SELECTステートメントには、同じ列数が必要です。列も同様のデータ型を持つ必要があります。また、各SELECTステートメントの列は同じ順序でなければなりません。
例:表1の顧客/表2の注文
内部結合
SELECT ID、NAME、AMOUNT、DATE
お客様から
内部結合オーダー
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
連合:
SELECT ID、NAME、AMOUNT、DATE
お客様から
左の注文を残します
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
連合
SELECT ID、NAME、AMOUNT、顧客からの日付
正しい順に並べる
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;