如何获取sql表列中的n个间隙数?

6uxekuva  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(279)

我有一个名为student data的表,有两列sinfo和sid。sinfo,范围从g74001到g99999。下面是表格的格式。
编写一个sql查询,从'sinfo'中获取第一个n个间隔(在本例中假设为3)。
在这种情况下,前3个间隙为g74003、g74004、g74006。如何通过sql查询实现。sid是唯一的值。

ckx4rj1h

ckx4rj1h1#

创建一个包含所有数字的临时表,然后左键联接基表并选择所有的空值或顶值,例如

Create Table #Tmp
([SINFO] [nvarchar](50) NULL)

declare @ddd int =74000 
WHILE @ddd < 74015 
BEGIN  
   select @ddd= @ddd +1
   insert into #Tmp (SINFO)  values (  'G' + Convert(Nvarchar ,  @ddd ))
END;  

--all gaps
select  #Tmp.SINFO , Table_2.SINFO  from #Tmp
left join Table_2 on #Tmp.SINFO = Table_2.SINFO 
where Table_2.SINFO is null
order by   #Tmp.SINFO

--Frist gaps
select top(1) #Tmp.SINFO , Table_2.SINFO  from #Tmp
left join Table_2 on #Tmp.SINFO = Table_2.SINFO 
where Table_2.SINFO is null
order by   #Tmp.SINFO

If(OBJECT_ID('tempdb..#Tmp') Is Not Null)
Begin
  Drop Table #Tmp
End

相关问题