Tidak ada bedanya jika Anda melakukan ini di INNER JOIN.
Namun, bila Anda menggunakan LEFT atau RIGHT JOIN, tidak buat perbedaan apakah Anda memasukkan filter tambahan ke dalam klausa GABUNG atau ke dalam klausa WHERE.
Saat Anda memasukkan filter ke dalam klausa WHERE, SQL Server melakukan penggabungan terlebih dahulu, lalu sepenuhnya memfilter baris yang tidak sesuai dengan filter.
--> ini akan mengurangi jumlah baris yang dikembalikan
Saat Anda memasukkan filter ke GABUNG, SQL Server melakukan pemfilteran selama penggabungan, tetapi hanya pada tabel tempat Anda meletakkan filter.
Anda masih mendapatkan semua baris dari tabel lain, tetapi hanya tabel yang memiliki data dari tabel terfilter tempat filter cocok.
--> ini tidak akan mengurangi jumlah baris, tetapi kolom dengan data dari tabel filter akan kosong di lebih banyak baris
Susah dijelasin... biar lebih jelas, ini contohnya:
Ambil contoh data dari Jawaban RedFilter :
CREATE TABLE [dbo].[t1](
[ID] [int] NULL,
[StatusID] [int] NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[t2](
[ID] [int] NULL
) ON [PRIMARY]
INSERT INTO t1 (ID, StatusID) VALUES (1, 10)
INSERT INTO t1 (ID, StatusID) VALUES (2, 11)
INSERT INTO t1 (ID, StatusID) VALUES (3, 12)
INSERT INTO t1 (ID, StatusID) VALUES (4, 12)
INSERT INTO t2 (ID) VALUES (1)
INSERT INTO t2 (ID) VALUES (3)
INSERT INTO t2 (ID) VALUES (5)
...dan jalankan kueri berikut di atasnya:
/* this returns four rows, but only two will have data
from the second table in the second column */
SELECT t1.ID, t2.ID
FROM t1
LEFT JOIN t2 ON t1.Id = t2.Id
/* this returns only one row: the one where t2.ID = 1 */
SELECT t1.ID, t2.ID
FROM t1
LEFT JOIN t2 ON t1.Id = t2.Id
WHERE t2.ID = 1
/* this returns four rows as in the first query, but only one
row will have data in the second column: the one where t2.ID = 1 */
SELECT t1.ID, t2.ID
FROM t1
LEFT JOIN t2 ON t1.Id = t2.Id
AND t2.ID = 1
Perhatikan hasil yang berbeda seperti yang ditunjukkan dalam komentar.