sql >> Databáze >  >> RDS >> Mysql

Jak najít mezery v sekvenčním číslování v mysql?

Aktualizovat

ConfexianMJS poskytoval mnohem lepší odpověď z hlediska výkonu.

(ne tak rychlá) odpověď

Zde je verze, která funguje na tabulce libovolné velikosti (nejen na 100 řádcích):

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 - první id v aktuální mezeře
  • gap_ends_at - poslední id v aktuální mezeře


  1. Migrace databáze Microsoft Access na SQL Server

  2. SQLite Intersect

  3. JPA - EclipseLink - Jak změnit výchozí schéma

  4. T-SQL dotaz pro zobrazení definice tabulky?