使用SQL辨識運算元中的缺口
在資料分析中,尋找執行計數器列中的缺口是一項常見任務。在SQL中,可以使用幾種方法來實現此目的,提供與各種DBMS相容的標準解決方案。
找第一個缺口
目標是從計數器列中辨識出最小的缺失正整數。例如,給定[1, 2, 4, 5],缺口為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>
Oracle
<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 (最通用)
<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>
滑動視窗函數 (如果支援)
<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>
以上是如何使用 SQL 尋找正在運行的計數器列中的第一個間隙?的詳細內容。更多資訊請關注PHP中文網其他相關文章!