检查最小和最大的ID后,我需要从下表#a
寻找失踪的id:的我需要找到从表中缺少ID从另一个表
id |SEQ|Text
1 |1 |AA
1 |3 |CC
1 |4 |DD
1 |5 |EE
1 |6 |FF
1 |7 |GG
1 |8 |HH
1 |10 |JJ
2 |1 |KK
2 |2 |LL
2 |3 |MM
2 |4 |NN
2 |6 |PP
2 |7 |QQ
3 |1 |TT
3 |4 |ZZ
3 |5 |XX
MAX和MIN SEQ表#a
存储在另一个表#b
:下面
id| mn| mx
1 | 1 | 12
2 | 1 | 9
3 | 1 | 5
我的查询给予正确的输出,但执行是昂贵的。有没有解决这个问题的另一种方法?
with cte
as
(
select id, mn, mx
from #b
union all
select id, mn, mx -1
from cte
where mx-1 > 0
)
select
cte.id, cte.mx
from
cte
left join #a on cte.id = #a.id and cte.mx = #a.seq
where
#a.seq is null
order by cte.id, cte.mx
主要有在此查询2个问题:
如果有人能帮助我,这将是一件好事。我被卡住了。
谢谢你。它是从sys.all_objects生成数字的好方法。我将在明天上班时测试它的表现。但我确信这种方法会提高查询性能。再次感谢你的时间 – sam
@sam,如果你有一个持久的数字表,它将有一个主键(唯一索引)。如果你想要表现,有一个索引是很重要的。 –