sql server 2008 - SQL- Left Join to Replace Not in -



i'm trying replace not in using left join reason couldn't desired result.
here original query

create table #versions (     ruleid int, isdraft int )  -- prod #versions insert #versions values (1, 0) insert #versions values (2, 0) -- deleted  -- draft version insert #versions values (1, 1) -- changed added 

original code (this should give '2'):

-- getting rules deleted      select distinct vp.ruleid #versions vp vp.isdraft = 0     except      select distinct vd.ruleid #versions vd vd.isdraft = 1  

changed code:

select vp.ruleid #versions vp  left join #versions vd  on vd.ruleid = vp.ruleid , vp.isdraft = 0 , vd.isdraft = 1 

am missing something...???
please advice.
thanks.

if want use , anti -join you'll need 2 things

1) test right side of join see if values null

2) don't include filters on left side in join

select vp.ruleid    #versions vp         left join #versions vd                on vd.ruleid = vp.ruleid                   , vd.isdraft = 1   vp.isdraft = 0         , vd.ruleid null  

demo


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -