MySQLのIN()にNOTをつけてやるとなんか変
MySQLでIN()にNOTをつけて指定以外のものを取得したかったのでやってみた。
で、INの中が数件ならちゃんととってきてくれるんだけども、INの中が1000件を超えるデータだとちゃんととってきてくれない
検証データ
foo_t:70000件くらい
除外したいデータ:1000件くらい
ダメだった例
IN()のなかは1000件超
NOTなしの場合はIN()で指定したものが正常に取得できる
SELECT foo_id FROM foo_t WHERE foo_id IN ( '1' , '641418' , ・・・・・・・・・ '34885' , '619827' , '37861' , '50011' , '20949' ) ORDER BY hoge DESC
NOTだとうまくいかない
SELECT foo_id FROM foo_t WHERE foo_id NOT IN ( '1' , '641418' , ・・・・・・・・・ '34885' , '619827' , '37861' , '50011' , '20949' ) ORDER BY hoge DESC
成功した例
一時データbar_tにデータを入れてそれをサブクエリに突っ込んだ場合はうまくいった
SELECT foo_id FROM foo_t WHERE foo_id IN (SELECT foo_id FROM bar_t ); SELECT foo_id FROM foo_t WHERE foo_id NOT IN (SELECT foo_id FROM bar_t );
これってMySQLのバグ?
う〜ん・・・、謎のなので深追いはしない方向でw