Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj odwrotność sprzężenia?

Możesz użyć left outer join aby złapać wszystkich użytkowników, a następnie zdmuchnąć każdego użytkownika, do którego jest dołączona grupa. Poniższe zapytanie da ci tylko listę użytkowników, dla których nie ma żadnej grupy:

select
    u.*
from
    users u
    left outer join groupusers g on
        u.userid = g.userid
where
    g.userid is null

Jeśli chcesz znaleźć wszystkich użytkowników spoza określonej grupy:

select
    u.*
from
    users u
    left outer join groupusers g on
        u.userid = g.userid
        and g.groupid = @GroupID
where
    g.userid is null

To będzie tylko wykluczyć użytkowników z tej konkretnej grupy. Każdy inny użytkownik zostanie zwrócony. Dzieje się tak, ponieważ groupid warunek został wykonany w join klauzula, która ogranicza liczbę łączonych wierszy, które nie są zwracane, czyli właśnie to jest where klauzula.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Węzły TSQL Split XML

  2. Konwersja nie powiodła się podczas konwersji daty i/lub czasu z ciągu znaków

  3. najprostszy sposób na cykliczne przesyłanie pliku tekstowego na serwer sql

  4. Wstaw liczbę pustych wierszy w SQL

  5. Co to jest RAISERROR programu SQL Server?