Joining data¶
For performance and size reasons frequently data is split into multiple tables.
JOIN
operations merge two tables based on a matching column or columns
and allow returning columns from both tables.
In the examples below we will use the following tables:
table_1
is
A |
B |
---|---|
1 |
2 |
2 |
3 |
3 |
4 |
and table_2
is
A |
B |
C |
---|---|---|
1 |
2 |
3 |
2 |
3 |
4 |
3 |
4 |
5 |
CROSS¶
Supported datatypes: TINYINT, SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE TIMESTAMP, VARCHAR, BOOLEAN
The CROSS JOIN
returns a cartesian product of the selected columns thus it should be
used with caution as the number of results is a product of the unique numbers in each of the columns.
Example¶
SELECT A.<col_1>
, B.<col_2>
FROM <table_1> AS A
CROSS JOIN <table_2> AS B
Using the tables defined above, The following code
SELECT A.A AS col_1
, B.A AS col_2
FROM table_1 AS A
CROSS JOIN table_2 AS B
will return
col_1 |
col_2 |
---|---|
1 |
1 |
1 |
2 |
1 |
3 |
2 |
1 |
2 |
2 |
2 |
3 |
3 |
1 |
3 |
2 |
3 |
3 |
INNER¶
Supported datatypes: TINYINT, SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE TIMESTAMP, VARCHAR, BOOLEAN
The INNER JOIN
returns rows from both tables for all overlapping values
found in the matching column or columns.
Example¶
SELECT A.<col_1>
, B.<col_2>
FROM <table_1> AS A
INNER JOIN <table_2> AS B
ON A.<col_3> = B.<col_3>
Using the tables defined above, The following code
SELECT A.A AS col_1
, B.A AS col_2
, B.B AS col_3
FROM table_1 AS A
INNER JOIN table_2 AS B
ON A.A = B.B
will return
col_1 |
col_2 |
col_3 |
---|---|---|
2 |
1 |
2 |
3 |
2 |
3 |
FULL OUTER¶
Supported datatypes: TINYINT, SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE TIMESTAMP, VARCHAR, BOOLEAN
The FULL OUTER JOIN
returns rows from both tables for all distinct values
found in the matching column or columns. NULL
values are returned for not matched
rows from either of the tables.
See also
Example¶
SELECT A.<col_1>
, B.<col_2>
FROM <table_1> AS A
FULL OUTER JOIN <table_2> AS B
ON A.<col_3> = B.<col_3>
Using the tables defined above, The following code
SELECT A.A AS col_1
, B.A AS col_2
, B.B AS col_3
FROM table_1 AS A
FULL OUTER JOIN table_2 AS B
ON A.A = B.B
will return
col_1 |
col_2 |
col_3 |
---|---|---|
1 |
|
|
2 |
1 |
2 |
3 |
2 |
3 |
|
3 |
4 |
LEFT OUTER¶
Supported datatypes: TINYINT, SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE TIMESTAMP, VARCHAR, BOOLEAN
The LEFT OUTER JOIN
returns rows from both tables for values
from the left table and all matching values in the right table
that are matching based on the matching criteria. NULL
values are returned for not matched
rows from the right table.
See also
Example¶
SELECT A.<col_1>
, B.<col_2>
FROM <table_1> AS A
LEFT OUTER JOIN <table_2> AS B
ON A.<col_3> = B.<col_3>
Using the tables defined above, The following code
SELECT A.A AS col_1
, B.A AS col_2
, B.B AS col_3
FROM table_1 AS A
LEFT OUTER JOIN table_2 AS B
ON A.A = B.B
will return
col_1 |
col_2 |
col_3 |
---|---|---|
1 |
|
|
2 |
1 |
2 |
3 |
2 |
3 |