Dalam keadaan biasa, kondisi filter dapat ditentukan dalam klausa WHERE atau JOIN. Saya cenderung menempatkan filter di bawah DI MANA kecuali jika prioritas OUTER JOIN dapat terpengaruh (lihat di bawah) atau jika filter tersebut sangat spesifik untuk tabel itu (mis. TYPE = 12 untuk menentukan subset spesifik dari baris dalam tabel).
Di sisi lain, klausa ON dan WHERE dapat digunakan untuk menentukan kondisi gabungan (sebagai lawan dari kondisi filter). Selama Anda hanya menggunakan INNER bergabung, itu masih tidak masalah yang Anda gunakan dalam keadaan biasa.
Jika Anda menggunakan OUTER bergabung, bagaimanapun, itu bisa membuat banyak perbedaan. Jika, misalnya, Anda menentukan GABUNGAN LUAR antara dua tabel (t1 dan t2) tetapi kemudian, dalam klausa WHERE, lanjutkan untuk menentukan hubungan eqijoin antara tabel (misalnya t1.col = t2.col), Anda baru saja dikonversi menjadi OUTER join menjadi INNER join! Ini karena WHERE dapat digunakan untuk menentukan equijoin (atau mungkin bahkan OUTER bergabung, tergantung pada versinya, menggunakan sintaks yang sudah usang * =) tanpa menggunakan klausa ON, dan ketika WHERE menunjukkan equijoin bagian dalam di antara tabel, itu menimpa OUTER GABUNG (jika ada).
Pertanyaan aslinya adalah tentang filter, di mana jenis gabung sering kali tidak boleh menjadi masalah, tetapi gabung juga dapat bertindak sebagai filter dan dalam situasi tersebut penempatan kondisi gabung tentu saja bisa berarti.