ホームページ >データベース >mysql チュートリアル >MySQL の自動インクリメント列で欠落している連番を見つける方法

MySQL の自動インクリメント列で欠落している連番を見つける方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-12 09:15:43578ブラウズ

How to Find Missing Sequential Numbers in a MySQL Auto-Increment Column?

MySQL で連続した番号が付けられたギャップを見つける

このクエリでは、重複はありませんでしたが、投稿者はテーブルの自動インクリメント列で欠損値を検出しました。この問題の目的は、ID 71 ~ 82 など、連続していない可能性がある欠落している数値の値を特定して返すことです。

より良い解決策

JustPlainMJS は、パフォーマンスを大幅に向上させる代替手段を提供します。

効率の低いソリューション

任意のサイズのテーブルについては、次のアプローチを検討してください:

<code class="language-sql">SELECT 
  (t1.id + 1) as gap_starts_at, 
  (
    SELECT MIN(t3.id) -1 
    FROM arrc_vouchers t3 
    WHERE t3.id > t1.id
  ) as gap_ends_at
FROM 
  arrc_vouchers t1
WHERE 
  NOT EXISTS (
    SELECT t2.id 
    FROM arrc_vouchers t2 
    WHERE t2.id = t1.id + 1
  )
HAVING gap_ends_at IS NOT NULL</code>

このクエリ内:

  • gap_starts_at は、現在のギャップの最初の ID を表します。
  • gap_ends_at は、現在のギャップの最後の ID を表します。

以上がMySQL の自動インクリメント列で欠落している連番を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。