Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak znaleźć luki w numeracji sekwencyjnej w mysql?

Aktualizacja

ConfexianMJS dostarczył znacznie lepszy odpowiedź pod względem wydajności.

Odpowiedź (nie tak szybka, jak to możliwe)

Oto wersja, która działa na stole o dowolnym rozmiarze (nie tylko na 100 rzędach):

SELECT (t1.id + 1) as gap_starts_at, 
       (SELECT MIN(t3.id) -1 FROM arrc_vouchers t3 WHERE t3.id > t1.id) as gap_ends_at
FROM arrc_vouchers t1
WHERE NOT EXISTS (SELECT t2.id FROM arrc_vouchers t2 WHERE t2.id = t1.id + 1)
HAVING gap_ends_at IS NOT NULL
  • gap_starts_at - pierwszy identyfikator w obecnej luce
  • gap_ends_at - ostatni identyfikator w aktualnej luce


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz tabelę w MySQL

  2. ADDDATE() Przykłady – MySQL

  3. MySQL łączy dwie kolumny i dodaje do nowej kolumny

  4. Używanie dict Pythona do instrukcji SQL INSERT

  5. Błąd MySQL::'Odmowa dostępu dla użytkownika 'root'@'localhost'