Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapatkan kebalikan dari gabungan?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus semua spasi dari string di SQL Server

  2. Berurusan dengan perubahan Database antara cabang versi/rollback di ASP.NET

  3. String koneksi SQL Server Asynchronous Processing=true

  4. Bagaimana cara menghapus bagian waktu dari nilai datetime (SQL Server)?

  5. Hapus skrip SQL Server 2008