我正在运行以下 MySQL 查询以过滤价格在特定范围内的列表的数量。
SELECT `listing_id`, `price` FROM (`listings`)
WHERE `post_timestamp` BETWEEN (NOW() - 0 AND NOW() - 5)
AND `price` > '0' AND `price` < '10000'
ORDER BY `post_timestamp` desc
问题:虽然有些行的价格列的值介于 0 到 10,000 之间,但这并没有给我任何结果。
现在下面的 SQL 查询返回正确的结果
SELECT `listing_id`, `price` FROM (`listings`)
WHERE `post_timestamp` BETWEEN (NOW() - 0 AND NOW() - 5)
AND `price` < '10000'
ORDER BY `post_timestamp` desc
但是下面的这个查询没有返回任何结果!!
SELECT `listing_id`, `price` FROM (`listings`)
WHERE `post_timestamp` BETWEEN (NOW() - 0 AND NOW() - 5)
AND `price` > '0'
ORDER BY `post_timestamp` desc
这让我很困惑,想知道是否有人对此有解释/解决方案?
编辑 下面的代码给我结果!
SELECT `listing_id`, `price` FROM (`listings`)
WHERE `price` > '0'
字段类型: int(8)
删除引号 周围的数值没有区别
最佳答案
(我发现自己不明白这是什么解释),
所以,简而言之
去掉括号:-
WHERE `post_timestamp` BETWEEN NOW() - 0 AND NOW() - 5 //first where clause
AND `price` < '10000'
它可能会返回零个匹配项,
因为比较时间太短(now() - 5 秒)
检查最近 5 天
WHERE `post_timestamp` BETWEEN DATE_SUB( NOW(), INTERVAL 5 DAY) AND NOW()
AND `price` < 10000
关于php - 使用 MySQL 过滤数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8458309/