整数のテーブルを使用して、数値の範囲を取得できます。
言う:-
SELECT a.i + b.i * 10 + c.i * 100 FROM integers a, integers b, integers c
i と呼ばれる単一の列を持つ integers と呼ばれるテーブルを使用すると、値が 0 から 9 の 10 行で、0 から 999 までのすべての数値が得られます (さらに数回テーブルに対して簡単に結合して、より大きな数値を取得できます)。
未使用の番号を見つけるために、テーブルに対してそれを結合できます:-
SELECT *
FROM (SELECT a.i + b.i * 10 + c.i * 100 AS anInt FROM integers a, integers b, integers c) Sub1
LEFT OUTER JOIN someTable
ON Sub1.anInt = someTable.stand
WHERE someTable.stand IS NULL
これは機能しますが、範囲の両端のすべての数字も同様に表示されます。これらについては、最小値と最大値に対して結合する必要があります
SELECT Sub1.anInt
FROM (SELECT a.i + b.i * 10 + c.i * 100 AS anInt FROM integers a, integers b, integers c) Sub1
INNER JOIN (SELECT MIN(stand) AS MinStand, MAX(stand) AS MaxStand FROM someTable) Sub2
ON Sub1.anInt >= Sub2.MinStand AND Sub1.anInt <= Sub2.MaxStand
LEFT OUTER JOIN someTable
ON Sub1.anInt = someTable.stand
WHERE someTable.stand IS NULL