2010年10月 5日

[mysql 15412] not in句がうまく動かない。

なかでと申します。

以下のようなテーブルがあったとします。

CREATE TABLE IF NOT EXISTS `usrs` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`name` varchar(255) default NULL,
PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;


INSERT INTO `usrs` (`id`, `name`) VALUES(1, 'ほげ');
INSERT INTO `usrs` (`id`, `name`) VALUES(2, 'ふご');

このとき、idフィールドが偶数のデータを取り出したくて

SELECT * FROM `usrs` WHERE id % 2 not in (1);

のようなSQLを発行したのですが、「返り値が空でした(行数0)」のような
表示がされます。なお、

SELECT * FROM `usrs` WHERE id % 2 in (0);
SELECT * FROM `usrs` WHERE id % 2 != 1;

のようにすると取り出すことができます。

確認したmysqlのバージョンは4.0.27でした。
なお、5.0.22では、この問題はありませんでした。

で、教えていただきたいのですが、これは、4.0.27に限った問題なのでしょうか?
それとも4系の問題なのでしょうか?

あるいは、 not in の使い方やテーブルの仕様などに問題があるのでしょうか?


以上、教えていただければ幸いです。

では、失礼します。


投稿者 xml-rpc : 2010年10月 5日 19:28
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/98896
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。