Table1では利用可能で、Table2では利用できないレコードを見つける必要がありました。そのために、2つのクエリを書きました。左結合が結合されていない列に対して予期せぬ結果をもたらしています
select t1.a, t2.b, a.t1.c, t2.d, t2.e
from Table1 t1
left join Table2 t2
on t1.a = t2.d (and/where) t2.d is null;
select t1.a, t2.b, a.t1.c, t2.d, t2.e
from (select * from Table1) as t1
left join (select * from Table2) as t2
on t1.a = t2.d where t2.d is null;
t2.dフィールドが期待どおりNULLになっています。ただし、t2.eは、最初のケースではnull値ではなく、2番目のクエリではnull結果(これも期待されます)を与えています。
2つのクエリの動作の違いについて教えてください。
追加情報:データフィールドには空白も空白もありません。 MySQLの5.6
であなたに表1で使用可能なすべてのレコードを表示しません。クエリの –
'(と/ where)'は有効な構文ではありません。実際の最初のクエリは何ですか? – Barmar
問題を示すサンプル・データをsqlfiddleで作成できますか? – Barmar