mysql:8885
From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Tue, 02 Mar 2004 16:19:50 +0900
Subject: [mysql 08885] Re: 整数フィールドの次の空きを探す sql は
こんにちは。 柴垣 顕郎 <akiro@xxxxxxxxxx>さんの <20040302145937.9F6D.AKIRO@xxxxxxxxxx> "[mysql 08880] 整数フィールドの次の空きを探す sqlは" SQLに於いては、存在しないレコードの値を持ってくる種類の操作は至極困難 だと思います。よって、 (1) 全ての数を含むテーブルから抜けがある数を含むテーブルをLEFT JOINして 最大/最小の数の抽出を行う。 (2) 全ての数を含み、その数の使用/非使用の情報を持つテーブルに対し最大/ 最小の数の抽出を行う。 等が解法となるでしょう。(1)は多分柴垣さんが考えられた方法と思います。 (2)は、例えば席や部屋の割当等に使用されるでしょう。この様なテーブル定義 になると思います。 create table ROOMS ROOMNO int not null primary key, USED enum('YES','NO') default 'NO' GRADE enum('SUITE','DOUBLE','TWIN','SINGLE'), ..... ) 何の目的で数字の抜けを捜さなければならないのかが分からないため、本当に数字 の抜けを捜し再利用しなければならないのかどうかは分かりません。ただセッシ ョン番号の様なものの場合には、抜けを捜す様な事はせずに、単に最大値より1 つ大きい値を使って行った方が簡単でしょう。 松枝知直 <tomom@xxxxxxxxxx> http://www.argus.ne.jp/~tomom/
8880 2004-03-02 15:16 [柴垣 顕郎 <akiro@xx] 整数フィールドの次の空きを探す sql は 8882 2004-03-02 15:59 ┣[KAWAJI Shinya <kawaj] 8883 2004-03-02 16:04 ┃┗[KAWAJI Shinya <kawaj] 8888 2004-03-02 20:50 ┃ ┗[柴垣 <akiro@xxxxxxxx] 8889 2004-03-02 23:40 ┃ ┗[ML account <ml@xxxxx] 8890 2004-03-03 08:47 ┃ ┗[KAWAJI Shinya <kawaj] 8894 2004-03-03 09:28 ┃ ┣[柴垣 <akiro@xxxxxxxx] 8899 2004-03-03 12:54 ┃ ┃┗[Seiji Uramoto <uramo] 8895 2004-03-03 10:11 ┃ ┣[ML account <ml@xxxxx] 8898 2004-03-03 12:35 ┃ ┗[班石悦夫 <madara@xxx] 8900 2004-03-03 14:44 ┃ ┗[ML account <ml@xxxxx] -> 8885 2004-03-02 16:19 ┣[ML account <ml@xxxxx] 8886 2004-03-02 18:48 ┗[班石悦夫 <madara@xxx]