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'字段是浮点类型字段
答案 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。