2

この質問は、テーブル内の最初の「未使用」の番号を見つける方法を説明していますが、追加の制約を定義できるように同じ番号を見つけるにはどうすればよいですか。100 を超えた後に最初の未使用の数値を取得するようにクエリを変更するにはどうすればよいですか?

たとえば、テーブルに 23、56、100、101、103 がある場合、102 を取得する必要があります。

4

5 に答える 5

1

これがあなたを助けることを願っています

SELECT MIN (id) + 1
  FROM myTable T1
 WHERE id >= 100
   AND NOT EXISTS (SELECT *
                     FROM myTable T2
                    WHERE T1.id + 1 = T2.id)
于 2013-07-22T08:27:55.373 に答える
0

これを使って:

SELECT TOP 1 a1.id + 1 FROM test a1 left JOIN test a2 
ON a1.id = a2.id - 1 
WHERE a2.id IS NULL AND a1.id > 100
于 2014-04-23T07:05:30.003 に答える
0

楽しみと利益のために generate_series() を使用する:

CREATE table islands (num INTEGER NOT NULL PRIMARY KEY);

INSERT INTO islands (num ) VALUES
(23), (56), (100), (101), (103) ;

WITH total AS (
        SELECT generate_series(mima.bot, mima.top) AS num
        FROM ( SELECT MIN(num) AS bot , MAX(num) AS top FROM islands) mima
        )
SELECT num
FROM total tt
WHERE num >=100
AND NOT EXISTS (
        SELECT *
        FROM islands ii
        WHERE ii.num = tt.num
        )
        ;
于 2013-09-11T11:30:05.413 に答える