外側のジョイン(この場合は左側の外側ジョインを取ることができます)右側のテーブルにフィルタを追加するにはどうすれば動作しますか?左側の外部ジョインの右側のテーブルにフィルタを追加する
SELECT s.id, i.name FROM Student s
LEFT OUTER JOIN Student_Instructor i
ON s.student_id=i.student_id
AND i.name='John'
私は、フィルタがStudent
テーブル上にあった場合、それはより多くの「最初の名前=ジョンとのすべての行を取得し、テーブルを結合する」ようになることを理解しています。
しかし、フィルタが右側のテーブル(Student_Instructor
)にある場合、そのような場合はわかりません。フィルタi.name='John'
はどのように解釈されますか? 、あなたの例のクエリではi.name = 'ジョンは' 返される行のみ
SELECT s.id FROM Student s
LEFT OUTER JOIN (Select * from Student_Instructor where name='John') i
ON s.student_id=i.student_id
フィルタがJOIN条件またはWHERE句に適用される場所によって異なります。 – user2989408
@ user2989408フィルタは、例のようにJOIN条件で適用されます。 – user624558
クエリープランを表示するために選択する前にEXPLAINと入力してください – carexcer