Mysql Sıradaki Atlanmış Boş Otomatik Id Numaralarını Bulma

Bazen auto increment kullanırken aradan veriler silinebiliyor. Bu şekilde bir kullanım ile tekrar boş idleri doldurabilirsiniz

SELECT t1.id+1 AS siradaki FROM urun AS t1 WHERE 0=(SELECT COUNT(t2.id) FROM urun AS t2 WHERE t2.id=t1.id+1 order by t2.id asc) order by t1.id asc LIMIT 1

Yukarıdaki örnekte urun adlı tablodaki id sütununa göre arama yapar ve sıradaki boş id leri çağırır.

Örneğin 1,2,3,5,6 gibi bir veride 4 sonucunu verir.

SELECT t1.id+1 AS siradaki FROM urun AS t1 WHERE 0=(SELECT COUNT(t2.id) FROM urun AS t2 WHERE t2.id>=t1.id+1 and t2.id<=t1.id+21 order by t2.id asc) and t1.id>1000 order by t1.id asc LIMIT 1

Yukarıdaki örnekte urun adlı tablodaki id sütununa göre arama yapar,1000 nolu id’den büyük ve arada 20 adet ardışık boş id bulunan değerleri döndürür.

Örneğin 1025,1028,1030,1051 gibi bir veride 1031 sonucunu verir