整数の表を使用して数値の範囲を取得できます。
セイ: - 簡単にすることができます(あなたに0と999の間のすべての番号を取得します9までの値0と10行で、私と呼ばれる単一の列と整数と呼ばれるテーブルで
SELECT a.i + b.i * 10 + c.i * 100 FROM integers a, integers b, integers c
より多くの数字を得るためにテーブルに数回参加してください)。
は、あなたがテーブルに対して、未使用の番号を検索することに参加できます -
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
を、そして独自の配列にして、すべての 'stand'年代を得ることができ、あなたが何かを行うことができます'$ freeStands = array_diff(range(1,100)、$ idArray));' – Jon
oh ... sqlの外に...私はそれについて考えなかった、おかげで、それは解決策でなければならない –
' $ taken_stands =配列(1、2、3、5、7); echo $ ids = explode( "、"、$ taken_stands); $ Sql = "... WHERE STANDS NOT IN($ ids)"; ' –