ホームページ > データベース > mysql チュートリアル > MySQL テーブルで欠落しているシーケンシャル ID を見つけるにはどうすればよいですか?

MySQL テーブルで欠落しているシーケンシャル ID を見つけるにはどうすればよいですか?

DDD
リリース: 2024-11-30 08:21:11
オリジナル
954 人が閲覧しました

How to Find Missing Sequential IDs in a MySQL Table?

MySQL テーブルで欠落している ID を見つける

リレーショナル データベース テーブルでは、一意で連続した ID の維持など、データの整合性を確保することが重要です。ただし、欠失または挿入により ID シーケンスにギャップが発生する可能性があります。この記事では、MySQL テーブルから欠落している ID を取得するという課題に対処し、この問題を解決するための詳細なクエリを提供します。

問題の説明

次の MySQL テーブルについて考えてみましょう。

ID | Name
1  | Bob
4  | Adam
6  | Someguy
ログイン後にコピー

ご覧のとおり、ID 番号 (2、3、5) が欠落しています。タスクは、欠落している ID (この場合は「2,3,5」) のみを返すクエリを構築することです。

Solution

次のクエリは、行方不明のID:

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)
ログイン後にコピー

説明

  • クエリは、テストテーブルの 2 つのエイリアス a と b を作成します。
  • (a.id が以下であることを確認した後、b の最小 ID から a の ID を減算することにより、欠落している範囲を取得します) b.id).
  • GROUP BY a.id は、欠落範囲の先頭を表す a.id に基づいて結果を分類します。
  • HAVING start < MIN(b.id) は、次の ID が占有されているギャップを除外します (たとえば、ID 6 があるため 5 は除外されます)。

補足説明

  • [配列ギャップの特定MySQL](https://web.archive.org/web/20220706195255/http://www.codediesel.com/mysql/sequence-gaps-in-mysql/)

以上がMySQL テーブルで欠落しているシーケンシャル ID を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート