Anda dapat menggunakan left outer join
untuk mengambil semua pengguna, lalu, singkirkan semua pengguna di mana ada grup yang terpasang. Kueri berikut hanya akan memberi Anda daftar pengguna yang tidak memiliki grup:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
where
g.userid is null
Jika Anda ingin menemukan semua pengguna yang tidak berada dalam grup tertentu:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
and g.groupid = @GroupID
where
g.userid is null
Ini akan hanya mengecualikan pengguna dalam grup tertentu. Setiap pengguna lain akan dikembalikan. Ini karena groupid
kondisi dilakukan di join
klausa, yang membatasi baris yang digabungkan, tidak dikembalikan, yang merupakan where
klausa tidak.