BigQuery入門
Matthew Forrest
Field CTO
INNER JOIN: 両テーブルに存在する値。
LEFT JOIN: 左テーブルの全行。右テーブルとマッチ。
RIGHT JOIN: 右テーブルの全行。左テーブルとマッチ。
FULL JOIN: 両テーブルの全行。マッチと非マッチを含む。
CROSS JOIN: 両テーブルの全行どうしをすべて組み合わせ。

Customers: 左テーブル
Orders: 右テーブル
INNER JOIN: 顧客とその注文の一致
LEFT JOIN: 注文がない顧客も含め全顧客を表示
RIGHT JOIN: 顧客IDが欠けていても全注文を表示
FULL JOIN: 互いに関与していなくても全顧客・全注文を表示
CROSS JOIN: 条件なしで全注文×全顧客を組み合わせ
SELECT
c.customer_id, s.product_name
FROM customers c
-- The INNER keyword is optional
JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 2 | Running Shoes |
SELECT
c.customer_id, s.product_name
FROM customers c
LEFT JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 2 | Running Shoes |
| 3 | null |
SELECT
c.customer_id, s.product_name
FROM customers c
RIGHT JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 2 | Running Shoes |
| null | External Microphone |
SELECT
c.customer_id, s.product_name
FROM customers c
OUTER JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 2 | Running Shoes |
| 3 | null |
| null | External Microphone |
SELECT
c.customer_id,
s.product_name,
-- Adding table names separated
-- by a comma is a CROSS JOIN
-- Order is determined by the
-- left table, here "customers"
FROM customers c, sales_data s;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 1 | null |
| 2 | Bluetooth Headphones |
| 2 | null |
| 3 | null |
| 3 | Bluetooth Headphones |
SELECT
c.customer_id,
payments.method
FROM customers c,
UNNEST(
customers.payment_methods
) payments;
| customer_id | product_name |
|-------------|--------------|
| 1 | Visa |
| 1 | Mastercard |
| 1 | Venmo |
| 1 | Paypal |
| 2 | Amex |
| 2 | Visa |
BigQuery入門