--把cards和card_id换成自己的表名和字段
方法一
select a.rownumber from (select ROW_NUMBER() over(order by card_id) as rownumber,card_id from cards) a
left join cards c on a.rownumber=c.card_id
where c.card_id is null
方法二
if exists(select 1 from sysobjects where id=object_id('temptable'))
drop table temptable
select card_id,new_ID
into temptable
from (
select card_id,new_ID = (select top 1 card_id from cards where card_id=(select min(card_id) from cards where card_id>a.card_id))
from cards as a
) as b
--得到不连续id
select * from temptable where card_id <> new_ID - 1
--不连续的前前后后记录
select a.* from cards a inner join (select * from temptable where card_id <> new_ID - 1) b
on a.card_id >= b.card_id and a.card_id <=b.new_ID
order by a.card_id
方法三
select *,Convert(int,a.musicno)-Convert(int,b.MusicNo) as diffno from
(select ROW_NUMBER() over(order by MusicNo) as rownumber,MusicNo from #fs) a,
(select ROW_NUMBER() over(order by MusicNo)+1 as rownumber,MusicNo from #fs) b
where a.rownumber=b.rownumber
and Convert(int,a.musicno)-Convert(int,b.MusicNo)>1

