2008年4月18日

DB | SQLパズル

2-3-28 最小の空き番号を取得その2

誰かこれのMySQL(4.1)版を教えてください。

SELECT
    MIN(t0.No) + 1
FROM
    GetNo AS t0
    LEFT JOIN GetNo AS t1 ON t0.No + 1 = t1.No
WHERE
    t1.No IS NULL;

これだと1が抜けている場合にダメだ。

Posted by otsuka : 16:01 | Comment (1) | Trackback (0)
Comment

実際に動かしてないですけど、これならどうでしょう?

select ifnull(ifnull(min(cnt), max(No) + 1), 1)
from (select a.No, nullif(count(*), a.No) as cnt
from GetNo a, GetNo b
where a.No >= b.No
group by a.No) as x

Posted by: kamataro : 2008年4月23日 15:46









名前、アドレスを登録しますか?