Mennyi lyuk van a tábla id-jában?

Sokan szeretnék, ha egy tábla id-jában nem lennének lyukak. Ezt nem egyszerű megoldani, a legtöbb esetben nem is kell. Viszont ha kíváncsiak vagyunk, hogy mennyi ilyen van, akkor itt egy lekérdezés, amivel ezt megnézhetjük.


;with cte as (
    select
        id,
        id - row_number() over(order by id) as rn
from <table name> 

)

select
    row_number() over(order by (select null)) as group_id,
    min(id) as min_id,
    max(id) as max_id
from cte
group by rn
order by min_id

 

Demozzuk le

1.) Készítsünk egy táblát 100.000 sorral

drop table if exists #tmp 
go

select top 100000
	row_number() over(order by (select null)) as id
into #tmp
from sys.columns c1
cross join sys.columns c2
cross join sys.columns c3
cross join sys.columns c4
cross join sys.columns c5
go

2.) Töröljünk belőle, hogy tudjuk ellenőrizni a script-et

delete from #tmp 
where id between 1000 and 5000 
	or id between 10000 and 15000
	or id between 25000 and 35000
go

3.) Ellenőrizzük le

;with cte as (
	select
		id, 
		id - row_number() over(order by id) as rn
	from #tmp 
	
)


select
	row_number() over(order by (select null)) as group_id,
	min(id) as min_id, 
	max(id) as max_id
from cte 
group by rn
order by min_id

És az eredmény:

group_id             min_id               max_id
-------------------- -------------------- --------------------
1                    1                    999
2                    5001                 9999
3                    15001                24999
4                    35001                100000
Reklámok

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

w

Kapcsolódás: %s

%d blogger ezt kedveli: