mysql:8881
From: "TAKT Co.,ltd." <"TAKT Co.,ltd." <t@xxxxxxxxxx>>
Date: Tue, 2 Mar 2004 15:44:32 +0900
Subject: [mysql 08881] select の where 指定で件数が正しくない
清川といいます。はじめまして。 今日はmysqlのselect,whereのトラブルについてお聞きしたくメールさせていただきました。 sql文自体には問題がないと思っているのですが・・・ 前半部分はシステムが決めて、後半部分はユーザーが決めるというシステムの都合上、 範囲の限定が無駄になっている部分があります。 mysql> select count(*) from bukken where (((ensen=2197 && eki BETWEEN 10 AND 110 ) || (ensen=2176 && eki BETWEEN 200 AND 215) || (ensen=2269 && eki BETWEEN 40 AN D 100) || (ensen=2256 && eki BETWEEN 111 AND 230)) && ((ensen=2269 && eki=70) || (ensen=2269 && eki=80) || (ensen=2269 && eki=90))); +-----------+ | count(*) | +-----------+ | 272 | +-----------+ 1 row in set (0.01 sec) で、 mysql> select count(*) from bukken where (((ensen=2197 && eki BETWEEN 10 AND 110 ) || (ensen=2176 && eki BETWEEN 200 AND 215) || (ensen=2269 && eki BETWEEN 40 AN D 100) || (ensen=2256 && eki BETWEEN 110 AND 230)) && ((ensen=2269 && eki=70) || (ensen=2269 && eki=80) || (ensen=2269 && eki=90))); +-----------+ | count(*) | +-----------+ | 0 | +-----------+ 1 row in set (0.00 sec) になります。本来は、272件の表示をするはずの下のsqlが、0件になってしまいます。 違いは3行目、BETWEEN 110と111の違いだけです。 下のsqlも範囲の指定を一つ削れば、正しいcount272件を表示します。 環境は、redhat 8,mysql Ver 13.5 Distrib 4.1.0-alpha, for pc-linux (i686)です。 sql文の変更以外で正しい結果を表示させたく思っています。 どなたか、ご教授いただければと思います。 よろしくお願いします。
-> 8881 2004-03-02 15:44 ["TAKT Co.,ltd." <t@x] select の where 指定で件数が正しくない 8891 2004-03-03 09:03 ┣[KAWAJI Shinya <kawaj] 8893 2004-03-03 09:17 ┃┗[nagai <w96176sn@xxxx] timeout について 8892 2004-03-03 09:08 ┣[とみたまさひろ <tomm] 8901 2004-03-03 21:48 ┃┗["TAKT Co.,ltd." <t@x] 8910 2004-03-06 11:21 ┣["片寄白王" <katayose] 8934 2004-03-09 09:21 ┃┗["TAKT Co.,ltd." <t@x] 8978 2004-03-14 19:59 ┗["TAKT Co.,ltd." <t@x] 8979 2004-03-14 22:30 ┣[とみたまさひろ <tomm] 8984 2004-03-15 09:34 ┗[ML account <ml@xxxxx]