【发布时间】:2015-07-07 17:19:52
【问题描述】:
我正在尝试使用 LEFT JOIN 替换 NOT IN,但由于某种原因无法获得所需的结果。
这是原始查询
create table #versions
(
Ruleid int, IsDraft INT
)
-- prod #versions
insert into #versions values (1, 0)
insert into #versions values (2, 0) -- this will be deleted
-- Draft version
insert into #versions values (1, 1) -- changed added
原始代码(这应该给出'2'):
-- Getting all the rules that are deleted
select distinct vp.ruleid from #versions vp where vp.IsDraft = 0
except
select distinct vd.ruleid from #versions vd where vd.IsDraft = 1
更改代码:
select vp.RuleId from #versions vp
LEFT JOIN #versions vd
ON vd.RuleId = vp.RuleId and vp.IsDraft = 0 and vd.IsDraft = 1
我是不是错过了什么……???
请指教。
谢谢。
【问题讨论】:
-
为什么要更改查询?您之前的查询有什么问题?
NOT IN在哪里?为什么要使用LEFT JOIN?
标签: sql sql-server-2008 sql-server-2005