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だけで概ね処理できるので。