本文示範了一個 SQL 查詢來找出資料庫表中遺失的順序 ID。此方法利用 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中文網其他相關文章!