AdvancedSubqueries & EXISTS
Subquery to find gaps in sequential IDs
The query
SQL
SELECT
a.order_id + 1 AS gap_start,
b.order_id - 1 AS gap_end,
(b.order_id - a.order_id - 1) AS missing_count
FROM orders a
JOIN orders b ON a.order_id + 1 < b.order_id
WHERE NOT EXISTS (
SELECT 1 FROM orders c
WHERE c.order_id BETWEEN a.order_id + 1 AND b.order_id - 1
)
ORDER BY gap_start;Note
“Gap detection using self-join + NOT EXISTS. Classic SQL puzzle and real-world data quality check.