Finding Gaps in MySQL

Löcher in laufenden Nummern finden

winterwohnen mit Tabelle und garten_id mit der zu testenden Zahl ersetzen.

SELECT
    1 AS gap_start,
    MIN(e.garten_id) - 1 AS gap_end
FROM
    winterwohnen e
WHERE
NOT EXISTS
     (
        SELECT 1
        FROM winterwohnen
        WHERE garten_id = 1
        ) 
LIMIT 1
UNION
SELECT
    a.garten_id + 1 AS gap_start,
    MIN(b.garten_id)- 1 AS gap_end
FROM
    winterwohnen AS a,
    winterwohnen AS b
WHERE
    a.garten_id < b.garten_id
GROUP BY
    a.garten_id
HAVING
    gap_start < MIN(b.garten_id);

Manfred Brandstetter

Seit 20 Jahren selbständiger IT Berater in Österreich. Im Moment kümmere ich mich am liebsten um Servervirtualisierungen auf Debian Basis und Webprogrammierung nach neuestem Technologiestand.

More Posts - Website

Follow Me:
TwitterFacebookGoogle Plus