ホームページ >データベース >mysql チュートリアル >SQL データベース テーブルで不足している自動インクリメント ID を見つけるにはどうすればよいですか?

SQL データベース テーブルで不足している自動インクリメント ID を見つけるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-11 09:38:40162ブラウズ

How Can I Find Missing Auto-Incrementing IDs in My SQL Database Table?

SQL を使用してテーブル内の欠落している ID を検索します

自動インクリメント主キーを持つデータベース テーブルでは、削除されたエントリによってフィールド値に「穴」が生じる可能性があります。これらの欠落している ID を特定するには、クエリを作成します。

MySQL および SQL Server クエリ:

<code class="language-sql">SELECT ID + 1
FROM table_name
WHERE ID + 1 NOT IN (SELECT DISTINCT ID FROM table_name);</code>

このクエリは、テーブル内の最初のエントリと最後のエントリの間にある、連続して欠落しているすべての ID のリストを提供します。

SQLite クエリ:

<code class="language-sql">SELECT DISTINCT id +1
FROM table_name
WHERE id + 1 NOT IN (SELECT DISTINCT id FROM table_name);</code>

SQLite は LIMIT キーワードをサポートしていないため、結果の重複を避けるために個別のサブクエリを使用してください。

その他の注意事項:

  • このクエリでは、最初の ID が 1 であると想定しています。
  • このクエリには、現在の最大 ID を超える削除された ID は含まれません。
  • 現在の最大値と指定された MaxID パラメーターの間に削除された ID を含めるには、クエリを次のように変更します。
<code class="language-sql">SELECT ID + 1
FROM table_name
WHERE ID + 1 NOT IN (
  SELECT DISTINCT ID FROM table_name
)
AND ID + 1 < MaxID;</code>

この変更は SQLite のすべてのバージョンでサポートされているわけではないことに注意してください。

以上がSQL データベース テーブルで不足している自動インクリメント ID を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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