おふとんの中から寝言をつぶやく

ビットコインなどの暗号(仮想)通貨関連の話題を中心に雑多に書きます。

SQLでOUTER JOINを使うときに、whereを使うときの書き方

今日少し悩んだところを書き残しておきます。

 

SQLでOUTER JOINを使うときに、最初に書いたテーブルに対してwhereを使おうとしたところ、以下のようなエラーが出ました。

 

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ...

 

 

テーブルa

+--+----+-----+

|id|name|flag1|
+--+----+-----+

 

テーブルb

+--+----+

| id| data |
+--+----+

 

SELECT ta.id, tb.id

FROM テーブルa AS ta

WHERE flag1 IS NULL 

LEFT OUTER JOIN テーブルb AS tb 

ON テーブルa.ID = テーブルb.ID;

 

上記のクエリはエラーになる。

ではどう書くか。

 

SELECT ta.id, tb.id

FROM テーブルa AS ta

LEFT OUTER JOIN テーブルb AS tb

ON テーブルa.id = テーブルb.id

WHERE ta.flag1 IS NULL;

 

ON 条件のあとに、whereを書ける。