Consulta MySQL não mostrando dados corretos
Pergunta
Feno a todos, eu tenho uma consulta mysql
SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '999' ORDER BY `product` DESC LIMIT 12 OFFSET 0
Obviamente, selecione 12 produtos em que o preço está entre 60 e 999. Isso mostra as linhas corretamente.
No entanto, se eu aumentar o limite como esta consulta
SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '1000' ORDER BY `product` DESC LIMIT 12 OFFSET 0
Nenhuma linha é mostrada. Alguma idéia de por que isso acontece? O campo de 'preço' é o campo do tipo float
Solução
Remova o 'porque os tipos de campo são números, não chars.
Outras dicas
Você está tratando '60'
e '1000'
como personagens. Use números:
where `price` between 60 and 1000
Se você usa strings de varchar, existe Sem linha isso vai corresponder a um between
'60' e '1000'condition, since
'1000'is smaller than
'60' em Varchars.
Estava trabalhando com '999'
Porque provavelmente existem alguns preços variados entre '6'
e '9'
.
mysql> select '60' < '9';
+------------+
| '60' < '9' |
+------------+
| 1 |
+------------+
1 row in set (0.00 sec)
Os 60, 999 e 1000 estão sendo tratados como chars em vez de flutuar ou int,
A razão pela qual ele funciona com o 999 é porque a comparação acontece nos chars ASCII.
Para 1000, você não receberá linhas que terão preço com ASCII começando entre 6 e 1, pois 6 tem um valor mais alto que 1.