php - mysql 价格范围 with 或 in range

标签 php mysql

我有一个表products,其中包含价格和销售列(float 8,2)。 没有售价的产品将具有如下所示的值(value)。 价格 13.20 销售 0.00

产品售价为: 价格 10.00 销售 08.00

我正在尝试获取 price 介于 $min 和 $max 之间或 sale 介于 $min 和 $max 之间的所有产品。

 select * from `products`  where       

( (价格 0.00 至 22.00 之间) 或 (促销 0.00 至 22.00 之间) )
status = 1 且 sold = 0 且 deleted = 0 order by id desc limit 12

但这不起作用?谁能帮我解决这个问题吗?提前致谢。

好的,我测试了这个 -

 select * from `products`  where       

( (价格 0.00 至 22.00 之间) 或 (促销 0.00 至 22.00 之间) )
status = 1 且 sold = 0 且 deleted = 0 order by id desc limit 12

问题我发现,如果最低价格是 0.01,那么它会起作用,但如果最低价格是 0.00,我会得到没有价格限制的产品。为什么查询讨厌 0.00 分钟价格? oO

最佳答案

我认为,您忘记了 OR 子语句之间的大括号:

select * from `products`
where (
    (`price` >= $min AND `price` <= $max) OR (`sale` >= $min AND `sale` <= $max)
) and `status` = 1 and `sold` = 0 and `deleted` = 0 order by `id` desc limit 12

关于php - mysql 价格范围 with 或 in range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21042919/

相关文章:

php - 表没有得到更新

php - sql 查询显示错误的总人口数

mysql - 在 mysql 的 ALTER TABLE 中添加约束时出现 SQL 语法错误

php - 将数组添加到 Mysql 中的最佳方法是什么

php - MySQL按出现次数排序

php - 如何检查两个数字并在两个数字后跳过

php - 新用户注册和收到激活邮件之间有 4 分钟的延迟

php - 为什么 ob_start ('ob_gzhandler' ) 破坏了这个网站?

mysql - 向主键插入 utf-8 数据时出现重复条目

php - 如何从数据库中的日期时间减去当前日期时间 - PHP