Rumah >pangkalan data >tutorial mysql >Bagaimana Saya Boleh Cari ID Auto-Incrementing yang Hilang dalam Jadual Pangkalan Data SQL Saya?

Bagaimana Saya Boleh Cari ID Auto-Incrementing yang Hilang dalam Jadual Pangkalan Data SQL Saya?

Susan Sarandon
Susan Sarandonasal
2025-01-11 09:38:40140semak imbas

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

Gunakan SQL untuk mencari ID yang hilang dalam jadual

Dalam jadual pangkalan data dengan kekunci utama penambahan automatik, entri yang dipadamkan boleh mencipta "lubang" dalam nilai medan. Untuk mengenal pasti ID yang hilang ini, anda boleh menulis pertanyaan.

Pertanyaan MySQL dan SQL Server:

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

Pertanyaan ini akan memberikan senarai semua ID yang tiada berturut-turut antara entri pertama dan terakhir dalam jadual.

Pertanyaan 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 tidak menyokong kata kunci LIMIT, jadi gunakan subkueri yang berbeza untuk mengelakkan hasil pendua.

Nota lain:

  • Pertanyaan ini menganggap ID pertama ialah 1.
  • Pertanyaan ini tidak termasuk sebarang ID yang dipadamkan lebih tinggi daripada ID maksimum semasa.
  • Untuk memasukkan ID yang dipadamkan antara maksimum semasa dan parameter MaxID yang ditentukan, ubah suai pertanyaan seperti berikut:
<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>

Sila ambil perhatian bahawa pengubahsuaian ini mungkin tidak disokong oleh semua versi SQLite.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Cari ID Auto-Incrementing yang Hilang dalam Jadual Pangkalan Data SQL Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn