今日少し悩んだところを書き残しておきます。
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を書ける。