sql >> Databáze >  >> RDS >> Sqlserver

Získat obrácenou hodnotu spojení?

Můžete použít left outer join chytit všechny uživatele, pak odfouknout každého uživatele, kde je připojena skupina. Následující dotaz vám poskytne pouze seznam uživatelů, u kterých neexistuje žádná skupina:

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

Pokud chcete najít všechny uživatele, kteří nejsou v konkrétní skupině:

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 bude pouze vyloučit uživatele v této konkrétní skupině. Každý další uživatel bude vrácen. Důvodem je groupid podmínka byla provedena v join klauzule, která omezuje spojované řádky, nevrací je, což je to, co where klauzule ano.



  1. 'CREATE VIEW' musí být prvním příkazem v dávce dotazu

  2. jarní bezpečnostní přihlášení nefunguje s oracle

  3. Rady k výkonu SQL Server od Brenta Ozara a Pinala Davea

  4. 1000000 až 1M a 1000 až 1K v dotazu Oracle