프로그래밍 언어/Database

“INNER JOIN”과“OUTER JOIN”의 차이점

Rateye 2021. 6. 1. 21:07
728x90
반응형
질문 : “INNER JOIN”과“OUTER JOIN”의 차이점은 무엇입니까?

또한 LEFT JOIN , RIGHT JOINFULL JOIN 이 어떻게 맞습니까?

답변

중복이없는 열에 결합한다고 가정하면 매우 일반적인 경우입니다.

  • A와 B의 내부 결합은 A가 B를 교차하는 결과, 즉 벤 다이어그램 교차의 내부 부분을 제공합니다.
  • A와 B의 외부 결합은 A 결합 B의 결과, 즉 벤 다이어그램 결합의 외부 부분을 제공합니다.

 

각각 하나의 열이있는 두 개의 테이블과 다음과 같은 데이터가 있다고 가정합니다.

A    B
-    -
1    3
2    4
3    5
4    6

(1,2)는 A에 고유하고 (3,4)는 일반적이며 (5,6)은 B에 고유합니다.

Inner join

동등한 쿼리 중 하나를 사용하는 내부 조인은 두 테이블의 교차, 즉 공통된 두 행을 제공합니다.

select * from a INNER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a = b.b;

a | b
--+--
3 | 3
4 | 4

Left outer join

 

왼쪽 외부 조인은 A의 모든 행과 B의 공통 행을 제공합니다.

select * from a LEFT OUTER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a = b.b(+);

a |  b
--+-----
1 | null
2 | null
3 |    3
4 |    4

Right outer join

 

오른쪽 외부 조인은 B의 모든 행과 A의 공통 행을 제공합니다.

select * from a RIGHT OUTER JOIN b on a.a = b.b;
select a.*, b.*  from a,b where a.a(+) = b.b;

a    |  b
-----+----
3    |  3
4    |  4
null |  5
null |  6

Full outer join

 

완전 외부 조인은 A와 B의 합집합을 제공합니다. 즉, A의 모든 행과 B의 모든 행을 제공합니다. A의 항목이 B에 해당하는 데이텀이없는 경우 B 부분은 null이고 그 반대입니다. 마찬가지로.

select * from a FULL OUTER JOIN b on a.a = b.b;

 a   |  b
-----+-----
   1 | null
   2 | null
   3 |    3
   4 |    4
null |    6
null |    5
출처 : https://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join
728x90
반응형