JOIN :

 table1のidとtable2のidが一致するもののみを結合して結果を返す

SELECT
  t1.id
  , t2.sales
FROM
  dataset.table AS t1
JOIN
  dataset.table AS t2
  ON
    t1.id = t2.id

LEFT JOIN :

 table1のレコードは全て抽出対象になり、table2と一致した情報のみ値を返す

SELECT
  t1.id
  , COALESCE(t2.sales, 0) AS sales  -- 結合対象にならなかった場合は、NULLになる為、NULLの場合何を入れるか?を指定しておくことが多い 
FROM
  dataset.table AS t1
LEFT JOIN
  dataset.table AS t2
  ON
    t1.id = t2.id

LEFT JOINする場合、COALESCE指定漏れてしまうことが多くて、その場合、table2に値がなかったものはNULLが入ってしまうので、これ以降の処理でなんかうまくデータ抽出できない。ってハマる場合が多いので要注意。基本的にどの項目もCOALESCE指定しておいたほうが安全。

また、同様にRIGHT JOINという形で、LEFT JOINの逆指定することもできるが、自分はほぼ使うことはないです。理由は、table1とtable2の位置を入れ替えれば、LEFT JOINで全く同じことが出来るので、そのあたりの調整をすればLEFT JOINだけで概ね処理できるので。

おすすめの記事