JAMADAM.COM

RSS Subscribe to my RSS feed

Stripe Calendar

Sep, 2010
Aug 1213141516171819202122232425262728293031 Sep 123456

Entry: 開発小ネタ集その1 - 欠番取得SQL

開発小ネタ集その1 - 欠番取得SQL

Initial post: 2009.10.10 | Last modified: 2009.10.10

開発小ネタ集その1。Postgresqlで、基本連番だけどたまに欠番がある場合に、欠番を再利用するSQL。

SELECT
    COALESCE(MIN(TBL.num), 0) + 1 as nextval
FROM
    data AS TBL
    LEFT JOIN data AS TMP
    ON TBL.num + 1 = TMP.num
WHERE
    TMP.num IS NULL;

PRIMARY KEY numが1,2,4,5という並びであれば3を返す。COALESCEでテーブルが空の場合にも対応。