web-dev-qa-db-ja.com

JOINとUNIONの違いは何ですか?

JOINUNIONはどう違いますか?例を教えてください。

223
Gold

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)
275
Alex Martelli

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が真である両方のテーブルからすべての行を出力します。

56
Kirtan

あなたは両方のために同じ概略説明を見るかもしれません、しかしこれらは全く混乱します。

ユニオンの場合:

Enter image description here

JOINの場合:

Enter image description here

43
Java Main

結合と結合は、1つ以上のテーブルのデータを結合するために使用できます。違いは、データの結合方法にあります。

簡単に言うと、は結合データを新しい列に結合します。 2つのテーブルが結合されている場合、最初のテーブルのデータは、同じ行の2番目のテーブルの列と並んで1組の列に表示されます。

共用体は、データを新しい行に結合します。2つの表が結合されている場合、最初の表のデータは1セットの行になり、2番目の表のデータはもう一組。行は同じ結果になります。

これが参加の視覚的描写です。表Aと表Bの列は1つの結果にまとめられます。

enter image description here

結果の各行には、テーブルAとBの両方の列が含まれます。あるテーブルの列が別のテーブルの列と一致すると、行が作成されます。この一致は結合条件と呼ばれます。

これにより、結合は値を調べて結果に含めるために非常に役立ちます。これは通常、非正規化(逆正規化)の結果であり、あるテーブルで外部キーを使用して別のテーブルで主キーを使用して列の値を検索することを含みます。

さて、上記の描写と労働組合の描写を比較してください。共用体では、結果内の各行は一方のテーブルORからのものです。結合では、結果を作成するために列が結合されず、行が結合されます。

enter image description here

結合と共用体の両方を使用して、1つ以上のテーブルからのデータを単一の結果にまとめることができます。二人ともこれについては異なる方法です。結合は異なるテーブルの列を結合するために使用されますが、共用体は行を結合するために使用されます。

出典

40
Humoyun

参加する

結合は、異なるテーブルから同じ名前または異なる名前の列を表示するために使用されます。表示される出力には、すべての列が個別に表示されます。つまり、列は互いに隣接して配置されます。

連合:

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
38

それらはまったく違うものです。

結合 を使用すると、異なるテーブル内の同様のデータを関連付けることができます。

共用体は、2つの異なるクエリの結果を単一のレコードセットとして返します。

20
adeshsuryan

Unionは2つのクエリを1つのように見せます。結合は、単一のクエリステートメントで2つ以上のテーブルを調べるためのものです。

9
James L

結合と共用体を使用して、1つ以上のテーブルのデータを結合できます。違いは、データの結合方法にあります。

簡単に言うと、結合はデータを新しい列に結合します。 2つのテーブルが結合されている場合、最初のテーブルのデータは、同じ行の2番目のテーブルの列と並んで1組の列に表示されます。

共用体はデータを新しい行に結合します。 2つのテーブルが「結合」されている場合、最初のテーブルのデータは1セットの行にあり、2番目のテーブルのデータは別のセットにあります。行は同じ結果になります。

2
VAHEED

ユニオンが結果をマージすることを忘れないでください( 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

1
MonsterMagnet

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 
 
0
user6341745

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;

0
ian