Join
Join the fun! Use the SMA today!
Description
Combines the rows from two table references based on join criteria. (Databricks SQL Language Reference JOIN)
A JOIN operation combines rows from two tables (or other table-like sources, such as views or table functions) to create a new combined row that can be used in the query. For a conceptual explanation of joins, see Working with Joins. (Snowflake SQL Language Reference JOIN)
Syntax
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 [, ...] ) }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>
[ ... ]Sample Source Patterns
Setup data
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'  );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);Pattern code
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. 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 *
    FROM employee
    SEMI JOIN department ON employee.deptno = department.deptno;- Use employee and department tables to demonstrate inner join. 
id
name
deptno
deptname
103
Paul
3
Engineering
101
John
1
Marketing
102
Lisa
2
Sales
- Use employee and department tables to demonstrate left join. 
id
name
deptno
deptname
105
Chloe
5
null
103
Paul
3
Engineering
101
John
1
Marketing
102
Lisa
2
Sales
104
Evan
4
null
106
Amy
6
null
- Use employee and department tables to demonstrate right join. 
id
name
deptno
deptname
103
Paul
3
Engineering
102
Lisa
2
Sales
101
John
1
Marketing
- Use employee and department tables to demonstrate full join. 
id
name
deptno
deptname
101
John
1
Marketing
102
Lisa
2
Sales
103
Paul
3
Engineering
104
Evan
4
null
105
Chloe
5
null
106
Amy
6
null
- Use employee and department tables to demonstrate cross join. 
id
name
deptno
deptname
105
Chloe
5
Engineering
105
Chloe
5
Sales
105
Chloe
5
Marketing
103
Paul
3
Engineering
103
Paul
3
Sales
103
Paul
3
Marketing
101
John
1
Engineering
101
John
1
Sales
101
John
1
Marketing
102
Lisa
2
Engineering
102
Lisa
2
Sales
102
Lisa
2
Marketing
104
Evan
4
Engineering
104
Evan
4
Sales
104
Evan
4
Marketing
106
Amy
6
Engineering
106
Amy
6
Sales
106
Amy
6
Marketing
- Use employee and department tables to demonstrate semi join. 
id
name
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;- Use employee and department tables to demonstrate inner join. 
id
name
deptno
deptname
103
Paul
3
Engineering
101
John
1
Marketing
102
Lisa
2
Sales
- Use employee and department tables to demonstrate left join. 
id
name
deptno
deptname
105
Chloe
5
null
103
Paul
3
Engineering
101
John
1
Marketing
102
Lisa
2
Sales
104
Evan
4
null
106
Amy
6
null
- Use employee and department tables to demonstrate right join. 
id
name
deptno
deptname
103
Paul
3
Engineering
102
Lisa
2
Sales
101
John
1
Marketing
- Use employee and department tables to demonstrate full join. 
id
name
deptno
deptname
105
Chloe
5
null
103
Paul
3
Engineering
101
John
1
Marketing
102
Lisa
2
Sales
104
Evan
4
null
106
Amy
6
null
- Use employee and department tables to demonstrate cross join. 
id
name
deptno
deptname
105
Chloe
5
Engineering
105
Chloe
5
Sales
105
Chloe
5
Marketing
103
Paul
3
Engineering
103
Paul
3
Sales
103
Paul
3
Marketing
101
John
1
Engineering
101
John
1
Sales
101
John
1
Marketing
102
Lisa
2
Engineering
102
Lisa
2
Sales
102
Lisa
2
Marketing
104
Evan
4
Engineering
104
Evan
4
Sales
104
Evan
4
Marketing
106
Amy
6
Engineering
106
Amy
6
Sales
106
Amy
6
Marketing
- Use employee and department tables to demonstrate semi join. 
id
name
deptno
103
Paul
3
101
John
1
102
Lisa
2
 Known Issues
No issues were found
Related EWIs
No related EWIs
Last updated
