MySQL Query为大于where子句返回较小的值

时间:2012-08-07 18:35:56

标签: php mysql

这是查询

  

SELECT * FROM TABLE WHERE id ='7883c2c8e6'AND value> '45'DESC

但由于某种原因,它返回一行,其中字段值的值为8.我已检查并且它没有前面或后面的字符。该字段当前设置为varchar。我想知道这是否会影响结果?

如果我改变>的方向到<这一行没有出现,但它应该是相反的方式呢?

3 个答案:

答案 0 :(得分:2)

因为'8'大于'45'(按字母顺序排列)。

Cast你的值为int:

AND convert( value, unsigned) > 45

答案 1 :(得分:1)

The field is currently set as varchar

这就是问题;如果在文本字段上使用比较运算符,它将按字母顺序排序结果,而不是数字排序。

要解决此问题,请将字段设置为整数。

答案 2 :(得分:0)

SELECT * FROM TABLE 
WHERE id = '7883c2c8e6' AND (value * 1) > 45
order by value DESC