檢查最小和最大的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,如果你有一個持久的數字表,它將有一個主鍵(唯一索引)。如果你想要表現,有一個索引是很重要的。 –