MySQL запрос не показывает правильные данные - PullRequest
0 голосов
/ 18 ноября 2010

Hay Всем, у меня есть запрос 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' является полем типа float

Ответы [ 3 ]

2 голосов
/ 18 ноября 2010

Удалите ', потому что типами полей являются числа, а не символы.

0 голосов
/ 18 ноября 2010

60, 999 и 1000 обрабатываются как символы вместо float или int,

Причина, по которой он работает с 999, заключается в том, что сравнение происходит на ascii-символах.

Для 1000 вы не получите строки, в которых цена будет равна ascii от 6 до 1, поскольку значение 6 выше, чем 1.

0 голосов
/ 18 ноября 2010

Вы рассматриваете '60' и '1000' как символы. Используйте номера:

where `price` between 60 and 1000

Если вы используете строки varchar, в строке нет строки , которая будет соответствовать between '60 'и' 1000 'condition, since' 1000 'is smaller than' 60'` в varchars.

Он работал с '999', потому что, вероятно, есть пара цен в диапазоне от '6' до '9'.

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