Maison > base de données > tutoriel mysql > Comment trouver les ID séquentiels manquants dans une table MySQL ?

Comment trouver les ID séquentiels manquants dans une table MySQL ?

DDD
Libérer: 2024-11-30 08:21:11
original
954 Les gens l'ont consulté

How to Find Missing Sequential IDs in a MySQL Table?

Recherche des identifiants manquants dans une table MySQL

Dans une table de base de données relationnelle, il est crucial de garantir l'intégrité des données, notamment en conservant les identifiants uniques et séquentiels. Cependant, des lacunes dans les séquences ID peuvent survenir en raison de suppressions ou d'insertions. Cet article aborde le défi de la récupération des identifiants manquants dans une table MySQL, en fournissant une requête détaillée pour résoudre ce problème.

Énoncé du problème

Considérez la table MySQL suivante :

ID | Name
1  | Bob
4  | Adam
6  | Someguy
Copier après la connexion

Comme vous pouvez le constater, il manque des numéros d'identification (2, 3 et 5). La tâche consiste à construire une requête qui renverra uniquement les identifiants manquants, dans ce cas, "2,3,5".

Solution

La requête suivante récupère les identifiants manquants :

SELECT a.id+1 AS start, MIN(b.id) - 1 AS end
    FROM testtable AS a, testtable AS b
    WHERE a.id < b.id
    GROUP BY a.id
    HAVING start < MIN(b.id)
Copier après la connexion

Explication

  • Le La requête crée deux alias, a et b, pour la table de test.
  • Elle calcule la plage manquante en soustrayant l'ID de a de l'ID minimum de b (après s'être assuré que a.id est inférieur à b.id) .
  • GROUP BY a.id catégorise les résultats en fonction de a.id, représentant le début des plages manquantes.
  • HAVING start &Lt ; MIN(b.id) exclut les espaces où l'ID suivant est occupé (par exemple, 5 est exclu puisqu'il y a un ID 6).

Lecture supplémentaire

  • [Identifier les lacunes de séquence dans MySQL](https://web.archive.org/web/20220706195255/http://www.codediesel.com/mysql/sequence-gaps-in-mysql/)

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal