Maison >base de données >tutoriel mysql >Comment puis-je trouver le premier écart dans une colonne de compteur en cours à l'aide de SQL ?
Utilisez SQL pour identifier les lacunes dans l'exécution des compteurs
Trouver des lacunes dans les colonnes des compteurs d'exécutions est une tâche courante dans l'analyse des données. En SQL, il existe plusieurs façons d'y parvenir, en proposant des solutions standards compatibles avec différents SGBD.
Trouver le premier écart
Le but est d'identifier le plus petit entier positif manquant dans la colonne du compteur. Par exemple, étant donné [1, 2, 4, 5], l'écart est de 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 Serveur
<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 (le plus courant)
<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>
Fonction de fenêtre coulissante (si prise en charge)
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!