您可以使用整数表来获取一系列数字。
说:-
SELECT a.i + b.i * 10 + c.i * 100 FROM integers a, integers b, integers c
使用一个名为 integers 的表,其中有一列名为 i,有 10 行,值为 0 到 9,这将为您提供 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