MySql、データベースのnumberの欠番を取得する。

"SELECT unique_number + 1 AS open_unique_number FROM Tables WHERE (unique_number + 1) NOT IN ( SELECT unique_number FROM Tables ) ORDER BY open_unique_number ASC";

テーブルのID等は、AUTO_INCREMENTに指定しておくと欠番が発生することなく連番で値が保存されていきますが、 * ユーザーが任意に指定できる数値であり、 * かつ、数値の被りは発生させたくない みたいなデータ(ここではunique_number)を保存するときは、欠番を表示してあげると被りを弾くバリデーションに引っかかり続けなくていいかなと思います。

上記の例ではデータベースに登録されていない欠番を小さい順に返します。

例えばデータベース上のunique_numberにすでに「1、2、5、6」が保存されている場合、上記のsqlで「3、7」を得ることができます。