문제

차이점은 무엇입니까? 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의 모든 쿼리에 속하는 모든 행을 포함하는 단일 결과 세트로 결합합니다.

사용하여 가입, 테이블 사이의 논리적 관계를 기반으로 둘 이상의 테이블에서 데이터를 검색 할 수 있습니다. 조인은 SQL이 한 테이블의 데이터를 사용하여 다른 테이블에서 행을 선택하는 방법을 나타냅니다.

Union Operation은 두 테이블의 열을 결합하는 결합을 사용하는 것과 다릅니다.

UNION Example:

SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]

산출:

Column1    Column2
-------------------
1          2
3          4

JOIN Example:

SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId

이것은 조건이있는 두 테이블의 모든 행을 출력합니다. a.Id = b.AFKId 사실이다.

결합 및 노조는 하나 이상의 테이블의 데이터를 결합하는 데 사용될 수 있습니다. 차이점은 데이터가 결합되는 방식에 있습니다.

간단히 말하면 결합 된 데이터를 새 열로 결합합니다. 두 개의 테이블이 함께 결합되면 첫 번째 테이블의 데이터가 같은 행의 두 번째 테이블 열과 함께 한 열 세트에 표시됩니다.

노조는 데이터를 새로운 행으로 결합합니다. 두 개의 테이블이 함께 "Unioned"인 경우 첫 번째 테이블의 데이터는 한 줄의 행에 있고 다른 세트의 두 번째 테이블의 데이터가 있습니다. 행이 같은 결과에 있습니다.

다음은 조인의 시각적 묘사입니다. 표 A와 B의 열은 단일 결과로 결합됩니다.

enter image description here

결과의 각 행에는 하나의 테이블의 열이 다른 테이블의 열에서 열이 일치 할 때 행이 생성됩니다. 이 일치를 결합 조건이라고합니다.

이것은 값을 찾아서 결과에 포함시키는 데 정말로 큰 참여를 만듭니다. 이것은 일반적으로 거절 (정규화 역전)의 결과이며 한 테이블에서 외래 키를 사용하여 다른 하나의 기본 키를 사용하여 열 값을 찾아냅니다.

이제 위의 묘사와 노조의 묘사를 비교하십시오. 노조에서 결과 내의 각 행은 한 테이블 또는 다른 테이블에서 나옵니다. 노조에서는 열이 결합되지 않으며 결과를 생성하지 않으며 행이 결합됩니다.

enter image description here

결합과 노조 모두 하나 이상의 테이블의 데이터를 단일 결과로 결합하는 데 사용될 수 있습니다. 그들은 둘 다 이것에 대해 다른 방법입니다. 결합은 다른 테이블의 열을 결합하는 데 사용되는 반면, 노조는 행을 결합하는 데 사용됩니다.

원천

둘 다에 대해 동일한 회로도 설명을 볼 수 있지만 이는 완전히 혼란 스럽습니다.

연합 :

Enter image description here

가입 :

Enter image description here

가입하다:

결합은 다른 테이블과 동일하거나 다른 이름의 열을 표시하는 데 사용됩니다. 표시된 출력에는 모든 열이 개별적으로 표시됩니다. 즉, 열은 서로 옆에 정렬됩니다.

노동 조합:

Union Set 연산자는 동일한 데이터 유형의 열이있는 두 개의 테이블의 데이터를 결합하는 데 사용됩니다. 노조가 수행되면 두 테이블의 데이터는 동일한 데이터 유형을 가진 단일 열에서 수집됩니다.

예를 들어:

아래에 표시된 두 테이블을 참조하십시오.

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

이제 결합 유형을 수행하려면 쿼리가 아래에 표시되어 있습니다.

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은 두 개의 쿼리를 하나처럼 보이게합니다. 결합은 단일 쿼리 문에서 두 개 이상의 테이블을 검사하기위한 것입니다.

결합 및 노조는 하나 이상의 테이블의 데이터를 결합하는 데 사용될 수 있습니다. 차이점은 데이터가 결합되는 방식에 있습니다.

간단히 말하면 데이터 결합을 새 열로 결합합니다. 두 개의 테이블이 함께 결합되면 첫 번째 테이블의 데이터가 같은 행의 두 번째 테이블 열과 함께 한 열 세트에 표시됩니다.

노조는 데이터를 새로운 행으로 결합합니다. 두 개의 테이블이 함께 "Unioned"인 경우 첫 번째 테이블의 데이터는 한 줄의 행에 있고 다른 세트의 두 번째 테이블의 데이터가 있습니다. 행이 같은 결과에 있습니다.

노조는 결과를 병합한다는 것을 기억하십시오 (SQL 서버 확실하게) (기능 또는 버그?)

select 1 as id, 3 as value
union
select 1 as id, 3 as value

이드, 가치

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. SQL 조인 절은 데이터베이스의 두 개 이상의 테이블의 레코드를 결합하는 데 사용됩니다. 조인은 각각에 공통 값을 사용하여 두 테이블의 필드를 결합하는 수단입니다.

2. SQL Union Operator는 둘 이상의 선택 설명 결과를 결합합니다. 노조 내의 각 선택 명세서에는 동일한 수의 열이 있어야합니다. 열에는 비슷한 데이터 유형이 있어야합니다. 또한 각 선택 문의 열은 동일한 순서이어야합니다.

예 : 표 1 고객/표 2 주문

내부 조인 :

ID, 이름, 금액, 날짜를 선택하십시오

고객으로부터

내부 조인 주문

customer.id = orders.customer_id에서;

노동 조합:

ID, 이름, 금액, 날짜를 선택하십시오

고객으로부터

왼쪽에 가입 주문

customer.id = orders.customer_id에서

노동 조합

고객의 ID, 이름, 금액, 날짜 선택

주문에 가입하십시오

customer.id = orders.customer_id에서;

ussing Union

Union은 두 개 이상의 쿼리 결과를 결합하여 Union의 모든 쿼리에 속하는 모든 행을 포함하는 단일 결과 세트로 결합됩니다.

UNION Example:
SELECT 121 AS [Column1], 221 AS [Column2]
UNION
SELECT 321 AS [Column1], 422 AS [Column2]
Output:

Column1    Column2
-------------------
121          221
321          422

Ussing Join

결합하면 테이블 사이의 논리적 관계를 기반으로 둘 이상의 테이블에서 데이터를 검색 할 수 있습니다.

JOIN Example:
SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id

초록에서는 두 테이블 또는 결과 세트가 결합되고 있다는 점에서 유사하지만 Union은 실제로 결과 세트와 동일한 수의 열을 유사한 데이터 유형을 갖는 열과 동일한 수의 열을 결합하기위한 것입니다. 구조는 동일하며 새로운 행만 추가됩니다.

조인에서는 공유/유사한 열이없는 직교 조인을 포함하여 테이블/결과 세트를 가능한 모든 구조와 결합 할 수 있습니다.

Union Operator는 두 개 이상의 선택 문을 결합하기위한 것입니다.

Join은 내부, 외부, 왼쪽 또는 오른쪽 방법으로 각 테이블에서 행을 선택하는 것이지만.

인용하다 여기 그리고 여기 . 예제에 대한 더 나은 설명이 있습니다.

노동 조합 운영은 결합 된 결과입니다 수직의 행의 집계, 노조 작전은 결합 된 결과입니다. 수평의 열의 집계.

나는 일반적인 차이를 다음과 같이 생각하고 싶습니다.

  • 조인 테이블에 가입합니다
  • Union (ET All)은 쿼리를 결합합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top