我有一个名为student data的表,它有两列SINFO和SID。范围从G74001到G99999的SINFO。下面是表格的格式。
编写一个SQL查询以从“SINFO”中获取间隔的第一个n(在本例中假设为3)。
在这种情况下,前3个间隙是G74003、G74004、G74006。如何通过SQL查询实现。SID是唯一的值。
mysql - 如何在SQL表列中获得N个间隙?-LMLPHP

最佳答案

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

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

关于mysql - 如何在SQL表列中获得N个间隙?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51355305/

10-09 05:59