Snowpark Migration Accelerator: Join

설명

지정된 조인 조건을 사용하여 두 테이블 참조 의 행을 병합합니다. 자세한 내용은 Databricks SQL Language Reference JOIN 섹션을 참조하십시오.

JOIN 은 두 소스(예: 테이블 또는 뷰)의 데이터를 단일 결과 세트로 결합합니다. 결과의 각 행에는 지정된 조건에 따라 두 소스의 열이 모두 포함됩니다. 조인에 대한 자세한 설명은 조인 작업 을 참조하십시오. (Snowflake SQL Language Reference JOIN)

구문

left_table_reference { [ join_type ] JOIN right_table_reference join_criteria |
           NATURAL join_type JOIN right_table_reference |
           CROSS JOIN right_table_reference }

join_type
  { [ INNER ] |
    LEFT [ OUTER ] |
    [ LEFT ] SEMI |
    RIGHT [ OUTER ] |
    FULL [ OUTER ] |
    [ LEFT ] ANTI |
    CROSS }

join_criteria
  { ON boolean_expression |
    USING ( column_name [, ...] ) }
Copy
SELECT ...
FROM <object_ref1> [
                     {
                       INNER
                       | { LEFT | RIGHT | FULL } [ OUTER ]
                     }
                   ]
                   JOIN <object_ref2>
  [ ON <condition> ]
[ ... ]

SELECT *
FROM <object_ref1> [
                     {
                       INNER
                       | { LEFT | RIGHT | FULL } [ OUTER ]
                     }
                   ]
                   JOIN <object_ref2>
  [ USING( <column_list> ) ]
[ ... ]

SELECT ...
FROM <object_ref1> [
                     {
                       | NATURAL [ { LEFT | RIGHT | FULL } [ OUTER ] ]
                       | CROSS
                     }
                   ]
                   JOIN <object_ref2>
[ ... ]
Copy

샘플 소스 패턴

설정 데이터

Databricks

-- Use employee and department tables to demonstrate different type of joins.
CREATE TEMP VIEW employee(id, name, deptno) AS
     VALUES(105, 'Chloe', 5),
           (103, 'Paul', 3),
           (101, 'John', 1),
           (102, 'Lisa', 2),
           (104, 'Evan', 4),
           (106, 'Amy', 6);

CREATE TEMP VIEW department(deptno, deptname) AS
    VALUES(3, 'Engineering'),
          (2, 'Sales'      ),
          (1, 'Marketing'  );
Copy

Snowflake

-- Use employee and department tables to demonstrate different type of joins.
CREATE TEMPORARY TABLE employee(id, name, deptno) AS
SELECT id, name, deptno
  FROM (VALUES (105, 'Chloe', 5),
           (103, 'Paul' , 3),
           (101, 'John' , 1),
           (102, 'Lisa' , 2),
           (104, 'Evan' , 4),
           (106, 'Amy'  , 6)) AS v1 (id, name, deptno);

CREATE TEMP VIEW department(deptno, deptname) AS
SELECT deptno, deptname
  FROM (VALUES(3, 'Engineering'),
          (2, 'Sales'      ),
          (1, 'Marketing'  )) AS v1 (deptno, deptname);
Copy

패턴 코드

Databricks

-- 1. Use employee and department tables to demonstrate inner join.
SELECT id, name, employee.deptno, deptname
   FROM employee
   INNER JOIN department ON employee.deptno = department.deptno;
 
-- 2. We will use the employee and department tables to show how a left join works. This example will help you understand how to combine data from two tables while keeping all records from the left (first) table.
SELECT id, name, employee.deptno, deptname
   FROM employee
   LEFT JOIN department ON employee.deptno = department.deptno;

-- 3. Demonstrate a RIGHT JOIN using employee and department tables. This query retrieves all departments and matching employees.
SELECT id, name, employee.deptno, deptname
    FROM employee
    RIGHT JOIN department ON employee.deptno = department.deptno;

-- 4. Demonstrate a FULL JOIN operation using the employee and department tables.
SELECT id, name, employee.deptno, deptname
    FROM employee
    FULL JOIN department ON employee.deptno = department.deptno;

-- 5. Demonstrate a cross join operation using the employee and department tables. This query returns all possible combinations of employees and departments.
SELECT id, name, employee.deptno, deptname
    FROM employee
    CROSS JOIN department;

-- 6. This example shows how to use a semi join between employee and department tables. A semi join returns records from the first table (employee) where there is a matching record in the second table (department).
```sql
SELECT *
    FROM employee
    SEMI JOIN department ON employee.deptno = department.deptno;
Copy
  1. 내부 조인이 어떻게 작동하는지 보여주기 위해 “employee” 및 “department”라는 2개의 샘플 테이블을 사용하겠습니다. Inner 조인은 지정된 열 간에 일치하는 항목이 있는 두 테이블의 행을 결합합니다.

id

이름

deptno

deptname

103

Paul

3

Engineering

101

John

1

마케팅

102

Lisa

2

Sales


  1. 직원 및 부서 테이블을 사용하여 왼쪽 조인이 어떻게 작동하는지 보여 드리겠습니다. 이 예는 왼쪽(첫 번째) 테이블의 모든 레코드를 유지하면서 두 테이블의 데이터를 결합하는 방법을 이해하는 데 도움이 됩니다.

id

이름

deptno

deptname

105

Chloe

5

Null

103

Paul

3

Engineering

101

John

1

마케팅

102

Lisa

2

Sales

104

Evan

4

Null

106

Amy

6

Null


  1. 직원 및 부서 테이블을 사용하여 SQL 에서 RIGHT JOIN 이 어떻게 작동하는지 보여 드리겠습니다.

id

이름

deptno

deptname

103

Paul

3

Engineering

102

Lisa

2

Sales

101

John

1

마케팅


  1. 직원 및 부서 테이블을 사용하여 전체 조인이 어떻게 작동하는지 보여 드리겠습니다. 전체 조인은 두 테이블의 일치하지 않는 행을 포함하여 두 테이블의 모든 레코드를 결합합니다.

id

이름

deptno

deptname

101

John

1

마케팅

102

Lisa

2

Sales

103

Paul

3

Engineering

104

Evan

4

Null

105

Chloe

5

Null

106

Amy

6

Null


  1. 직원 테이블과 부서 테이블 간에 교차 조인을 생성할어 한 테이블의 모든 행을 다른 테이블의 모든 행과 결합하는 방법을 보여 줍니다.

id

이름

deptno

deptname

105

Chloe

5

Engineering

105

Chloe

5

Sales

105

Chloe

5

마케팅

103

Paul

3

Engineering

103

Paul

3

Sales

103

Paul

3

마케팅

101

John

1

Engineering

101

John

1

Sales

101

John

1

마케팅

102

Lisa

2

Engineering

102

Lisa

2

Sales

102

Lisa

2

마케팅

104

Evan

4

Engineering

104

Evan

4

Sales

104

Evan

4

마케팅

106

Amy

6

Engineering

106

Amy

6

Sales

106

Amy

6

마케팅


  1. 직원 및 부서 테이블을 사용하여 세미 조인이 어떻게 작동하는지 보여 드리겠습니다. 세미 조인은 두 번째 테이블에 일치하는 레코드가 있는 경우 첫 번째 테이블에서 레코드를 반환합니다.

id

이름

deptno

103

Paul

3

101

John

1

102

Lisa

2

Snowflake

-- 1. Use employee and department tables to demonstrate inner join.
SELECT id, name, employee.deptno, deptname
   FROM employee
   INNER JOIN department ON employee.deptno = department.deptno;
 
-- 2. Use employee and department tables to demonstrate left join.
SELECT id, name, employee.deptno, deptname
   FROM employee
   LEFT JOIN department ON employee.deptno = department.deptno;


-- 3. Use employee and department tables to demonstrate right join.
SELECT id, name, employee.deptno, deptname
    FROM employee
    RIGHT JOIN department ON employee.deptno = department.deptno;


-- 4. Use employee and department tables to demonstrate full join.
SELECT id, name, employee.deptno, deptname
    FROM employee
    FULL JOIN department ON employee.deptno = department.deptno;


-- 5. Use employee and department tables to demonstrate cross join.
SELECT id, name, employee.deptno, deptname
    FROM employee
    CROSS JOIN department;

-- 6. Use employee and department tables to demonstrate semi join.
SELECT e.*
    FROM employee e, department d
    WHERE e.deptno = d.deptno;
Copy
  1. 내부 조인이 어떻게 작동하는지 보여주기 위해 “employee” 및 “department”라는 2개의 샘플 테이블을 사용하겠습니다. 내부 조인은 지정된 열에 일치하는 값이 있는 두 테이블의 레코드를 결합합니다.

id

이름

deptno

deptname

103

Paul

3

Engineering

101

John

1

마케팅

102

Lisa

2

Sales


  1. 직원 및 부서 테이블을 사용하여 왼쪽 조인을 시연합니다.

id

이름

deptno

deptname

105

Chloe

5

Null

103

Paul

3

Engineering

101

John

1

마케팅

102

Lisa

2

Sales

104

Evan

4

Null

106

Amy

6

Null


  1. 직원 및 부서 테이블을 사용하여 올바른 조인이 어떻게 작동하는지 보여 드리겠습니다.

id

이름

deptno

deptname

103

Paul

3

Engineering

102

Lisa

2

Sales

101

John

1

마케팅


  1. 직원 및 부서 테이블을 사용하여 전체 조인이 어떻게 작동하는지 보여 드리겠습니다. 전체 조인은 두 테이블의 일치하지 않는 행을 포함하여 두 테이블의 모든 레코드를 결합합니다.

id

이름

deptno

deptname

105

Chloe

5

Null

103

Paul

3

Engineering

101

John

1

마케팅

102

Lisa

2

Sales

104

Evan

4

Null

106

Amy

6

Null


  1. 직원과 부서 테이블 간에 교차 조인을 생성할어 각 직원이 모든 부서와 어떻게 짝을 이룰 수 있는지 보여 줍니다. 이 예에서는 두 테이블에서 가능한 모든 행 조합을 결합하여 교차 조인이 작동하는 방식을 보여 줍니다.

id

이름

deptno

deptname

105

Chloe

5

Engineering

105

Chloe

5

Sales

105

Chloe

5

마케팅

103

Paul

3

Engineering

103

Paul

3

Sales

103

Paul

3

마케팅

101

John

1

Engineering

101

John

1

Sales

101

John

1

마케팅

102

Lisa

2

Engineering

102

Lisa

2

Sales

102

Lisa

2

마케팅

104

Evan

4

Engineering

104

Evan

4

Sales

104

Evan

4

마케팅

106

Amy

6

Engineering

106

Amy

6

Sales

106

Amy

6

마케팅


  1. 직원 및 부서 테이블을 사용하여 세미 조인이 어떻게 작동하는지 보여 드리겠습니다. 세미 조인은 두 번째 테이블에 일치하는 레코드가 있는 경우 첫 번째 테이블에서 레코드를 반환합니다.

id

이름

deptno

103

Paul

3

101

John

1

102

Lisa

2

Known Issues

발견된 문제 없음