mysql:8900
From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Wed, 03 Mar 2004 14:44:12 +0900
Subject: [mysql 08900] Re: 整数フィールドの次の空きを探す sql は
こんにちは。 班石悦夫 <madara@xxxxxxxxxx>さんの <000101c400d0$9579edd0$1e27050a@xxxxxxxxxx> "[mysql 08898] Re: 整数フィールドの次の空きを探すsql は" [mysql 08886]に返事をしようと思っていたのですが、この方法には実装依存 性以外にバージョン依存性がありますね。当方は3.23.58です。まあ、“select @i:=2,@x:=@i,@z:=@i”を“set @i:=2,@x:=@i,@z:=@i”とすれば、動く事は動き ます。 しかし、変数まで使って、は、どうなんでしょうか。立場や考え方の違いはあ ると思いますが、ボク的にはトリッキーなクエリの使用は好ましくないと考えて います。シンプルな方法があるならそちらの方が良いですし、計画段階でトリッ キーなクエリを使用する可能性を排除して行くのが本筋だと考えています。 mysql> create table table2(a int); Query OK, 0 rows affected (0.00 sec) mysql> insert table2 values(1),(3),(4),(5),(8),(9); Query OK, 6 rows affected (0.00 sec) Records: 6 Duplicates: 0 Warnings: 0 mysql> select @i:=2,@x:=@i,@z:=@i; +-------+--------+--------+ | @i:=2 | @x:=@i | @z:=@i | +-------+--------+--------+ | 2 | 2 | 2 | +-------+--------+--------+ 1 row in set (0.00 sec) mysql> select a,@x:=@x+1,if(a<>@x and @z=@i,@z:=@x,null) -> from table2 where a>@i order by a; +------+----------+---------------------------------+ | a | @x:=@x+1 | if(a<>@x and @z=@i,@z:=@x,null) | +------+----------+---------------------------------+ | 3 | 1 | NULL | | 4 | 2 | NULL | | 5 | 3 | NULL | | 8 | 4 | NULL | | 9 | 5 | NULL | +------+----------+---------------------------------+ 5 rows in set (0.00 sec) mysql> select if(@z<>@i,@z,if(@x=@i,null,@x+1)); +-----------------------------------+ | if(@z<>@i,@z,if(@x=@i,null,@x+1)) | +-----------------------------------+ | 1.2742882995261e-102 | +-----------------------------------+ 1 row in set (0.00 sec) 松枝知直 <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]