MySQL查询没有显示正确的数据

时间:2010-11-18 11:29:36

标签: mysql limit between

Hay Everyone,我有一个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

没有显示任何行。任何想法为什么会这样? 'price'字段是浮点类型字段

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

where `price` between 60 and 1000

如果您使用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)

答案 2 :(得分:0)

60,999和1000被视为chars而不是float或int,

它适用于999的原因是因为比较发生在ascii字符上。

对于1000,你不会得到任何行,其中ascii的价格从6到1之间开始,因为6的值高于1。