其實(shí)大家稍微動(dòng)下大腦,問(wèn)題可以轉(zhuǎn)化為,是求最小連續(xù)數(shù)組中的最大值,數(shù)組大小可以為1。
=======================================================================
做戲做全套,送佛送到西。
為了便于學(xué)習(xí)研究,必然是要寫全套示例代碼的。
------------------------------------------------------------------------------------- --by wls --非專業(yè)SQL 不求高效 但求能跑 USE tempdb GO ------------------------------------------------------------------------------------- IF OBJECT_ID (N't_MaxInMinContinuousArr', N'U') IS NOT NULL DROP TABLE t_MaxInMinContinuousArr; GO CREATE TABLE t_MaxInMinContinuousArr(SNId INTEGER PRIMARY KEY,SomeDate DATETIME) GO ------------------------------------------------------------------------------------- DECLARE @i INT SET @i = --SNId起始值 DECLARE @TestScale INTEGER SET @TestScale=+@i --數(shù)據(jù)規(guī)模 DECLARE @t DATETIME , @t DATETIME , @dd INT , @dayadd INT , @tRes DATETIME SET @t = '-- ::' SET @t = '-- ::' SET @dd = DATEDIFF(dd, @t, @t) WHILE @i @TestScale --數(shù)據(jù)規(guī)模 BEGIN SET @dayadd = @dd * RAND() SET @tRes = DATEADD(dd, @dayadd, @t) + RAND() INSERT INTO t_MaxInMinContinuousArr VALUES(@i , @tRes) SET @i = @i + END GO --SELECT TOP * FROM t_MaxInMinContinuousArr --GO ------------------------------------------------------------------------------------- --Delete some SNId randomly DECLARE @TestScale INTEGER SET @TestScale= --數(shù)據(jù)規(guī)模 DELETE FROM t_MaxInMinContinuousArr WHERE SNId=--(SELECT abs(checksum(newid()))%@TestScale + ) DELETE FROM t_MaxInMinContinuousArr WHERE SNId=--(SELECT abs(checksum(newid()))%@TestScale + ) GO --SELECT TOP * FROM t_MaxInMinContinuousArr --GO ------------------------------------------------------------------------------------- --now find the SNId that SNId+ is missing. WITH TMinAndMaxSNId AS( SELECT MIN(SNId) AS MinSNId,MAX(SNId) AS MaxSNId FROM t_MaxInMinContinuousArr --The min and max SNId ), TContinuousId AS ( SELECT number AS SNIdCmped FROM master..spt_values,TMinAndMaxSNId WHERE type='p' AND number >=TMinAndMaxSNId.MinSNId AND number =TMinAndMaxSNId.MaxSNId ) SELECT MIN(res.SNIdCmped)- FROM ( SELECT SNIdCmped FROM TContinuousId EXCEPT SELECT SNId FROM t_MaxInMinContinuousArr) AS res GO
附上執(zhí)行計(jì)劃
=======================================================================
我也不知道這代碼能不能用,先發(fā)表了后續(xù)慢慢改吧。
網(wǎng)絡(luò)代碼有風(fēng)險(xiǎn) 復(fù)制粘貼需謹(jǐn)慎
執(zhí)行這兩個(gè)語(yǔ)句清緩存。
DBCC FREEPROCCACHE GO DBCC DROPCLEANBUFFERS GO
=======================================================================
20151103-01
代碼有問(wèn)題 有空改
=======================================================================
20151103-02
又嘗試了一下(大概幾十次猜范圍),發(fā)現(xiàn)只能處理2048以內(nèi)的缺失查找。這是個(gè)敏感的數(shù)字,得研究下。
當(dāng)然也可能是我不專業(yè),寫的代碼有問(wèn)題。
幸好不是我在開(kāi)發(fā)、生產(chǎn)中遇到的問(wèn)題,還能悠哉悠哉的分析查找問(wèn)題。
這件事的啟示是:你們這些討人厭的爬蟲小網(wǎng)站,錯(cuò)誤代碼就在這里我還就是不改了。
你們的行為是違法的,并不是說(shuō)通知然后刪除就是可以的。
我保留一切法律賦予我的權(quán)利。
標(biāo)簽:惠州 平頂山 貴港 唐山 長(zhǎng)白山 茂名 仙桃 潛江
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小連續(xù)數(shù)組中的最大值》,本文關(guān)鍵詞 SQL,Server,2008,查找,最小,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。