SQLserverでテーブルに設定されている連番の中で「歯抜け」の番号を見つけ出すSQLです。
番号の最大数などが決まっている場合は使わなくなった番号(歯抜け)を再利用することがよくあると思います。
今回はそんな「歯抜け」の番号を見つけ出すSQLを作成しました。
テーブル内の連番の歯抜け番号を探す
よくある処理でテーブルに設定されている連番の中で「歯抜け」の番号を見つけ出すSQLです。
前準備
テーブルを作成し、連番の「3」が抜けたデータを挿入します。
--テーブルの準備
CREATE TABLE test_table
(
no int
)
--データの準備
INSERT INTO test_table VALUES ( 1 )
INSERT INTO test_table VALUES ( 2 )
INSERT INTO test_table VALUES ( 4 )
INSERT INTO test_table VALUES ( 5 )
歯抜けの番号を探す
--歯抜けの番号を探す
SELECT
MIN( no + 1 ) AS 歯抜けの番号
FROM
test_table
WHERE
( no + 1 ) NOT IN ( SELECT no FROM test_table )
実行結果
| 抜け番 |
|---|
| 3 |
歯抜けの番号が無い場合の動作
連番の「3」を追加してSQLを実行すると
--データの準備
INSERT INTO test_table VALUES ( 3 )
--歯抜けの番号を探す
SELECT
MIN( no + 1 ) AS 歯抜けの番号
FROM
test_table
WHERE
( no + 1 ) NOT IN ( SELECT no FROM test_table )
実行結果
| 抜け番 |
|---|
| 6 |
と最大の値を返してくれます。
