Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe von SQL die erste Lücke in einer laufenden Zählerspalte finden?
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>
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>
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>
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>
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>
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!