2010-11-18 66 views
0

干草大家,我有一个MySQL查询MySQL查询没有显示正确的数据

SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '999' ORDER BY `product` DESC LIMIT 12 OFFSET 0 

这显然选择12种产品,其中价格是60和999之间的这种正确显示的行。

但是如果我增加限制这样的查询

SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '1000' ORDER BY `product` DESC LIMIT 12 OFFSET 0 

没有行得到显示。任何想法为什么发生这种情况'价格'字段是浮动类型字段

+0

更高的价值是价格列字母?如果是的话,那就是失败的关键。 – Kangkan 2010-11-18 11:32:19

回答

2

删除',因为字段类型是数字,而不是字符。

+0

这可以解决问题,当数字低于999时它是如何工作的? – dotty 2010-11-18 11:32:21

0

您将'60''1000'视为字符。使用数字:

where `price` between 60 and 1000 

如果使用VARCHAR字符串,有没有行将匹配在一个VARCHAR处理between '60' 和 '1000' condition, since '1000' is smaller than“60'`。

它与'999'一起工作,因为可能有几个价格介于'6''9'之间。

mysql> select '60' < '9'; 
+------------+ 
| '60' < '9' | 
+------------+ 
|   1 | 
+------------+ 
1 row in set (0.00 sec) 
0

的60,999和1000都得到治疗作为一个字符,而不是浮动或者int

它与999的原因是因为比较发生在ASCII字符。

对于1000,你不会得到这将对价格与ASCII码6和1之间开始以来6任行比1。