この記事では、データベース テーブル内で欠落している連続 ID を正確に特定する SQL クエリを示します。このアプローチでは、DISTINCT
キーワードを利用して重複エントリを排除し、 1
演算子を利用して一連の潜在的な ID を生成します。この生成されたシーケンスをテーブル内の既存の ID と比較することで、ギャップを効率的に特定します。 このメソッドは、初期 ID が 1 であると仮定し、現在の最大 ID まで検索します。
コアクエリ:
<code class="language-sql">SELECT DISTINCT id + 1 FROM mytable WHERE id + 1 NOT IN (SELECT DISTINCT id FROM mytable);</code>
このクエリは、概要を説明した問題に効果的に対処しますが、制限もあります。 現在の最大 ID を超えて作成され、その後削除された欠落 ID は検出されません。
この制限を克服するために、検索の上限を定義する MaxID
パラメーターを導入します。 WHERE
句に対するこの変更により、現在の最大値と MaxID
.
<code class="language-sql">SELECT DISTINCT id + 1 FROM mytable WHERE id + 1 NOT IN (SELECT DISTINCT id FROM mytable) AND id + 1 <= MaxID;</code>
この改善されたクエリは、現在の最大値までの欠落 ID を検索するだけでなく、より高い範囲から削除された可能性のある ID をカバーするように検索を拡張します。
提供されたクエリは、MySQL および SQLite データベースで正しく機能することが確認されています。 SQL Server などの他のデータベース システムとの互換性を確保するには、構文の若干の調整が必要になる場合があります。
以上がデータベース テーブル内で欠落している ID を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。