Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe von SQL die erste Lücke in einer laufenden Zählerspalte finden?

Wie kann ich mithilfe von SQL die erste Lücke in einer laufenden Zählerspalte finden?

Susan Sarandon
Freigeben: 2025-01-13 11:22:44
Original
821 Leute haben es durchsucht

How Can I Find the First Gap in a Running Counter Column Using SQL?

Verwenden Sie SQL, um Lücken in laufenden Zählern zu identifizieren

Das Finden von Lücken in Laufzählerspalten ist eine häufige Aufgabe bei der Datenanalyse. In SQL gibt es mehrere Möglichkeiten, dies zu erreichen, indem Standardlösungen bereitgestellt werden, die mit verschiedenen DBMS kompatibel sind.

Finden Sie die erste Lücke

Das Ziel besteht darin, die kleinste fehlende positive Ganzzahl aus der Zählerspalte zu identifizieren. Wenn beispielsweise [1, 2, 4, 5] gegeben ist, beträgt die Lücke 3.

MySQL, PostgreSQL

<code class="language-sql">SELECT  id + 1
FROM    mytable mo
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    mytable mi 
        WHERE   mi.id = mo.id + 1
        )
ORDER BY
        id
LIMIT 1</code>
Nach dem Login kopieren

SQL Server

<code class="language-sql">SELECT  TOP 1
        id + 1
FROM    mytable mo
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    mytable mi 
        WHERE   mi.id = mo.id + 1
        )
ORDER BY
        id</code>
Nach dem Login kopieren

Orakel

<code class="language-sql">SELECT  *
FROM    (
        SELECT  id + 1 AS gap
        FROM    mytable mo
        WHERE   NOT EXISTS
                (
                SELECT  NULL
                FROM    mytable mi 
                WHERE   mi.id = mo.id + 1
                )
        ORDER BY
                id
        )
WHERE   rownum = 1</code>
Nach dem Login kopieren

ANSI (am häufigsten)

<code class="language-sql">SELECT  MIN(id) + 1
FROM    mytable mo
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    mytable mi 
        WHERE   mi.id = mo.id + 1
        )</code>
Nach dem Login kopieren

Schiebefensterfunktion (falls unterstützt)

<code class="language-sql">SELECT  -- TOP 1
        -- 解除SQL Server 2012+的以上注释
        previd + 1
FROM    (
        SELECT  id,
                LAG(id) OVER (ORDER BY id) previd
        FROM    mytable
        ) q
WHERE   previd <> id - 1
ORDER BY
        id
-- LIMIT 1
-- 解除PostgreSQL的以上注释</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von SQL die erste Lücke in einer laufenden Zählerspalte finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage