SQL REFERENCE
Joins
Combine rows from multiple tables using INNER, LEFT, FULL OUTER, and CROSS joins.
INNER JOIN
SELECT left_t.id, lval, rval
FROM left_t INNER JOIN right_t ON left_t.id = right_t.id;
-- Returns only matching rows
-- (2, 200, 20), (3, 300, 30)
LEFT JOIN
SELECT left_t.id, lval, rval
FROM left_t LEFT JOIN right_t ON left_t.id = right_t.id;
-- Returns all left rows, NULLs for non-matching right
-- 4 rows total
CROSS JOIN
SELECT COUNT(*) FROM left_t CROSS JOIN right_t;
-- 4 * 3 = 12 rows
Join with WHERE
SELECT left_t.id, lval, rval
FROM left_t INNER JOIN right_t ON left_t.id = right_t.id
WHERE left_t.id > 2;
-- (3, 300, 30)
Join with Aggregation
SELECT left_t.id, SUM(rval)
FROM left_t INNER JOIN right_t ON left_t.id = right_t.id
GROUP BY left_t.id;
-- (2, 20), (3, 30)
Multi-Table Joins
SELECT left_t.id, lval, rval, t3val
FROM left_t
INNER JOIN right_t ON left_t.id = right_t.id
INNER JOIN t3 ON left_t.id = t3.id;
-- (2, 200, 20, 2000), (3, 300, 30, 3000)
Join with String Columns
SELECT str_l.id, name, city
FROM str_l INNER JOIN str_r ON str_l.id = str_r.id;
-- (1, 'alice', 'london'), (2, 'bob', 'paris')