
Syntax error: Unexpected keyword LEFT
テーブルを LEFT OUTER JOIN で結合しようとしたら発生したこのエラー。
一体何が原因で起こっているのか。
今回はBigQueryで「Syntax error: Unexpected keyword LEFT」が出る原因について解説する。
この記事を書いている人

記事を読むメリット
BigQueryで「Syntax error: Unexpected keyword LEFT」が出る原因がわかる
エラーメッセージ

まずエラーメッセージを見てみる。
Syntax error: Unexpected keyword LEFT
Syntax error これは構文エラー。
意味としては「SQL文の書き方が間違っている」ということ。
そして Unexpected keyword LEFT。
これはシステムが想定していない場所で LEFT キーワードが使われていることを意味している。
ここからエラーの原因をどのように理解すればいいのか。
BigQueryで「Syntax error: Unexpected keyword LEFT」が出る原因

BigQueryで「Syntax error: Unexpected keyword LEFT」が出る原因は、JOINする左側のテーブル名の後ろに , を付けているから。
実際にSQLで再現してみる。
SELECT * FROM project.test.tmp as tbl1, LEFT OUTER JOIN project.test.tmp_sample as tbl2 ON tbl1.col = tbl2.col
結果
Syntax error: Unexpected keyword LEFT at [3:1]
このように「Syntax error: Unexpected keyword LEFT」を再現することができた。


テーブル1 , と来たら次は テーブル2 が来るはずだろ!なんで
LEFT が来るんだよ!処理できねーよ!

回避方法

「Syntax error: Unexpected keyword LEFT」を回避するにはエラーの原因である , を削除すれば良い。
SELECT * FROM project.test.tmp as tbl1 LEFT OUTER JOIN project.test.tmp_sample as tbl2 ON tbl1.col = tbl2.col
まとめ

今回はBigQueryで「Syntax error: Unexpected keyword LEFT」が出る原因について紹介した。
原因はJOINする左側のテーブル名の後ろに , を付けているから。
修正するにはテーブルの後の , を削除すると正常にSQLが実行できる。

, なんで付けちゃったんだろう。テーブル1,テーブル2 とSQLを書くので、そこからJOIN結合にSQLを変更すると , が残してしまってエラーになることがありますね。

SQL文を修正するときに注意しなければいけないわけね。
他にもSQLのちょっとしたテクニックについてまとめているので、もし気になったら見てみて欲しい。
あわせて読みたい



