Вопрос

Сено все, у меня есть запрос 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

Никакие строки не проявляются. Есть идеи, почему это происходит? Поле «цена» - поле типа Float

Это было полезно?

Решение

Удалите «Потому что типы поля номера, а не символы.

Другие советы

Вы лечите '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)

60, 999 и 1000 обрабатываются как символы вместо плавания или INT,

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

За 1000 вы не получите какие-либо строки, которые будут иметь цену с ASCII, начиная от 6 до 1 с 6, имеет более высокое значение, чем 1.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top