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 |
と最大の値を返してくれます。