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