sql >> Database teknologi >  >> RDS >> Mysql

Hvordan finder man huller i sekventiel nummerering i mysql?

Opdater

ConfexianMJS leverede meget bedre svar med hensyn til ydeevne.

Svaret (ikke så hurtigt som muligt)

Her er en version, der fungerer på bord af enhver størrelse (ikke kun på 100 rækker):

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 - første id i nuværende hul
  • gap_ends_at - sidste id i nuværende mellemrum


  1. Forskellen mellem LockModeType Jpa

  2. Tillader Oracle muligheden for uforpligtende læsning?

  3. Importer filstørrelsesgrænse i PHPMyAdmin

  4. Hvordan kan jeg opdele en lang, enkelt SQLiteOpenHelper i flere klasser, en for hver tabel