sql >> Database teknologi >  >> RDS >> Sqlserver

Få det omvendte af en joinforbindelse?

Du kan bruge en left outer join for at få fat i alle brugerne, så blæs enhver bruger væk, hvor der er en gruppe tilknyttet. Følgende forespørgsel vil kun give dig listen over brugere, hvor der ikke er nogen gruppe at have:

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

Hvis du vil finde alle brugere, der ikke er i en bestemt gruppe:

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

Dette vil kun ekskluder brugerne i den pågældende gruppe. Hver anden bruger vil blive returneret. Dette skyldes, at groupid betingelse blev udført i join klausul, som begrænser rækkerne forbundet, ikke returneret, hvilket er hvad where klausul gør.



  1. Rekursiv forespørgsel med sum i Postgres

  2. Homestead - Opretter forbindelse til min database

  3. Naturlig deltagelse i SQL Server

  4. Nulstil sekvensen til en bestemt værdi