'status'というフィールドに関連する2つのテーブルがあります。 table2.locationの値が 'texas'の場合、table2.statusのインスタンスは20個あり、値は 'good'です。SQL LEFT JOINとどこが予期しない結果をもたらす
つまり、次のクエリはtable2.status = 'good'の20行を返します。
[A] SELECT table2.status FROM table2 WHERE table2.location = 'texas';
さらに、table1.status = 'good'を持つ50個のunique table1.idがあります。
つまり、次のクエリは50個の一意のtable1.idを返します。今
[B] SELECT table1.id FROM table1 WHERE table1.status = 'good';
、私は次のクエリを実行すると:
[C] SELECT table1.id FROM table1 LEFT JOIN table2 ON table1.status = table2.status WHERE table2.location = "texas";
私はそれはユニークなIDの50行を返すことを期待します。しかし、実際には、一意のIDの20回の50行を返しています(つまり、1000行が返されます)。
私がしたクイックフィックスは、単純にSELECT DISTINCT table1.id ...を実行して、50行(50行のうち20セットではない)の1セットを返します。
しかし、なぜ私はこの行動を見ているのですか?私の質問[C]には何か問題がありますか?
ありがとうございます!