sql >> Database >  >> RDS >> Sqlserver

Het omgekeerde van een join krijgen?

Je kunt een left outer join . gebruiken om alle gebruikers te pakken en vervolgens elke gebruiker weg te blazen waar een groep aan vastzit. De volgende zoekopdracht geeft u alleen de lijst met gebruikers waar er geen groep is:

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

Als u alle gebruikers wilt vinden die niet in een bepaalde groep zitten:

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

Dit zal alleen sluit de gebruikers in die specifieke groep uit. Elke andere gebruiker wordt geretourneerd. Dit komt omdat de groupid voorwaarde is gedaan in de join clausule, die de rijen beperkt, niet geretourneerd, dat is wat de where clausule wel.



  1. Postgresql-partitie en sqlalchemy

  2. Hoe de positie van een lijstitem in MySQL te retourneren

  3. Hoe rang in MySQL te berekenen

  4. Een procedure maken in een pakket in Oracle