Maison >base de données >tutoriel mysql >Comment SQL peut-il identifier la première valeur manquante dans une colonne de compteur en cours ?

Comment SQL peut-il identifier la première valeur manquante dans une colonne de compteur en cours ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-13 11:06:41722parcourir

How Can SQL Identify the First Missing Value in a Running Counter Column?

Utilisez SQL pour trouver des lacunes dans l'exécution des compteurs

SQL fournit un mécanisme puissant pour rechercher les valeurs manquantes dans une séquence de compteurs en cours d'exécution dans une table.

Pour déterminer la première valeur manquante dans la colonne du compteur d'exécutions (par exemple, les valeurs 1, 2, 4 et 5 sont présentes, mais 3 manque), vous pouvez utiliser la technique SQL suivante :

MySQL et 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 SQL (le moins efficace) :

<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>

Systèmes prenant en charge les fonctions de fenêtre coulissante :

<code class="language-sql">SELECT previd + 1
FROM (
    SELECT id,
    LAG(id) OVER (ORDER BY id) previd
    FROM mytable
) q
WHERE previd < id
LIMIT 1;</code>

En utilisant l'une de ces techniques SQL, vous pouvez identifier efficacement les lacunes manquantes dans les colonnes des compteurs d'exécutions dans les tables SQL, quel que soit le système de base de données que vous utilisez.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn