大家好。有一个表 products,其中有列 price(正常产品价格)、sale_price(sale,默认为 NULL)和 is_discount(0 或 1)。任务:选择产品价格以4000开头的所有行。我做了以下:
SELECT * FROM products as p WHERE p.price >= $price OR p.sale_price >= $price
(项目中的ZY,当然使用了PDO,这只是一个体现问题全部本质的例子)
例如,有一个产品的正常价格是 4999,销售价格是 3999。问题是查询使用 OR,所以当$price = 4000它进入列表时,不应该,因为它的价格打了折是3999。问:如何选择当前价格大于等于4000的所有产品?那些。从逻辑上讲,这里应该有一个逻辑运算符:如果is_discount = 1,则按 搜索sale_price,否则按price。怎么做才对?
或者
或者
PS我不确定最后一个版本 - 我需要检查......