BETWEEN使用负值和无符号整数

时间:2015-07-29 06:21:44

标签: mysql

我的表格中包含典型的无符号 int主键id

select * from log_data where id between -129 and -120
似乎试图返回表格中的每一行(或至少卡在'发送数据'几个小时)

id  select_type table      type     possible_keys   key     key_len   ref   rows    Extra
1   SIMPLE      log_data    ALL     PRIMARY         NULL    NULL      NULL  357114  Using where

根据BETWEEN https://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between处的文档: 如果所有参数属于同一类型

,这相当于表达式(min< = expr AND expr< = max)

然而,

select * from log_data where -129 <= id and id <= -120 

表现得像我期待的那样。

id  select_type table   type    possible_keys   key     key_len  ref    rows    Extra
1   SIMPLE      NULL    NULL    NULL            NULL    NULL     NULL   NULL    Impossible WHERE noticed after reading const tables

这是一个错误,还是可以解释这种行为?

1 个答案:

答案 0 :(得分:-2)

SELECT * FROM log_data WHERE id&lt; = -129和id&gt; = -120