MySQL Query не показывает правильные данные
Вопрос
Сено все, у меня есть запрос 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.