Skip to content

BigQueryで2つのテーブルを結合します

テーブル

item.item_table1

iditemprime
1A100
2B200
3C300

item.item_table2

iditemprime
1A100
2B200
4D400

item.item_table3

idclass
1A_class
2B_class

縦に結合

SQL
-- 結果を結合したものを、重複ありで返します
SELECT
    * 
FROM
  item.item_table1 
UNION ALL 
SELECT
    * 
FROM
  item.item_table2;
iditemprime
1A100
2B200
3C300
1A100
2B200
4D400
SQL
-- 結果を結合したものを、重複なしで返します
SELECT
    * 
FROM
  item.item_table1 
UNION DISTINCT 
SELECT
    * 
FROM
  item.item_table2
ORDER BY
  user_id
  , item
  , price;
iditemprime
1A100
2B200
3C300
4D400

条件付きの結合(横)

SQL
-- idが一致するものを横に結合
-- t2にないidがt1にある場合は除去される
SELECT
    t1.*,
    t3.class
FROM
  item.item_table1 AS t1
INNER JOIN
  item.item_table3 AS t3
ON 
    t1.id = t3.id
iditemprimeclass
1A100A_class
2B200B_class

条件付きの結合(横&null補正)

SQL
-- idが一致するものを横に結合
-- t2にないidがある場合は、null値で補完
SELECT
    t1.*,
    t3.class
FROM
  item.item_table1 AS t1
LEFT JOIN
  item.item_table3 AS t3
ON 
    t1.id = t3.id
iditemprimeclass
1A100A_class
2B200B_class
3C300null

参考サイト

【BigQuery】集合演算子(UNION…)まとめ