Artikel ini menunjukkan pertanyaan SQL untuk menentukan ID berjujukan yang hilang dalam jadual pangkalan data. Pendekatan ini memanfaatkan kata kunci DISTINCT
untuk menghapuskan entri pendua dan operator 1
untuk menjana urutan ID yang berpotensi. Dengan membandingkan jujukan yang dijana ini dengan ID sedia ada dalam jadual, kami mengenal pasti jurang dengan cekap. Kaedah ini menganggap ID awal ialah 1 dan mencari sehingga ID maksimum semasa.
Pertanyaan teras:
<code class="language-sql">SELECT DISTINCT id + 1 FROM mytable WHERE id + 1 NOT IN (SELECT DISTINCT id FROM mytable);</code>
Pertanyaan ini berkesan menangani masalah yang digariskan, tetapi ia mempunyai had. Ia tidak akan mengesan kehilangan ID yang dibuat melebihi ID maksimum semasa dan kemudiannya dipadamkan.
Untuk mengatasi had ini, kami memperkenalkan parameter MaxID
untuk menentukan had atas carian. Pengubahsuaian kepada klausa WHERE
ini membenarkan pengesanan ID yang hilang dalam julat maksimum semasa dan 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>
Pertanyaan dipertingkat ini bukan sahaja mencari ID yang hilang sehingga maksimum semasa tetapi juga memanjangkan carian untuk meliputi ID yang mungkin telah dipadamkan daripada julat yang lebih tinggi.
Pertanyaan yang diberikan telah disahkan berfungsi dengan betul dalam pangkalan data MySQL dan SQLite. Pelarasan sintaks kecil mungkin diperlukan untuk keserasian dengan sistem pangkalan data lain seperti SQL Server.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mencari ID yang hilang dalam Jadual Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!