Aktualisieren
ConfexianMJS war viel besser Antwort in Bezug auf die Leistung.
Die (nicht so schnelle) Antwort
Hier ist eine Version, die mit Tabellen jeder Größe funktioniert (nicht nur mit 100 Zeilen):
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
- erste ID in aktueller Lückegap_ends_at
- letzte ID in aktueller Lücke