我有一个带有典型 unsigned 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
这是一个错误,还是可以解释这种行为?
最佳答案
SELECT * FROM log_data
WHERE id
<= -129 and id
>= -120
关于mysql - BETWEEN 使用负值和无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31692663/