更新
ConfexianMJSははるかに優れたを提供しました 回答 パフォーマンスの観点から。
(できるだけ速くはない)答え
これは、(100行だけでなく)任意のサイズのテーブルで機能するバージョンです:
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
-現在のギャップの最初のID -
gap_ends_at
-現在のギャップの最後のID