Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Получаване на обратното на съединение?

Можете да използвате left outer join за да вземете всички потребители, след това издухайте всеки потребител, към който има прикачена група. Следната заявка ще ви даде само списъка с потребители, където няма група, която да има:

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

Ако искате да намерите всички потребители, които не са в определена група:

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

Това ще само изключете потребителите в тази конкретна група. Всеки друг потребител ще бъде върнат. Това е така, защото groupid условието е изпълнено в join клауза, която ограничава съединените редове, а не върнатите, което е това, което where клауза прави.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Параметризираната заявка ..... очаква параметъра '@units', който не беше предоставен

  2. Функция като USE за насочване към SQL база данни на различен сървър?

  3. Каква е разликата между съхранена процедура и изглед?

  4. T-SQL:Изтриване на всички дублиращи се редове, но запазване на един

  5. 5 предимства на проактивното наблюдение на ефективността на базата данни