mysql中的多个条件

2q5ifsrm  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(310)

我想根据价格、品牌和类别来筛选产品。但这些都不是必需的。因此用户可以只根据价格或价格和品牌来过滤产品。如何只使用查询在mysql中编写。我搜索了很多,但在存储过程的帮助下找到了解决方案。
如果我写这个查询 select * from product where brandid = 1 AND price = 10 and categoryid = 5 . 它将获取2个满足where子句的产品。
但是如果用户不想根据品牌(比方说)来过滤产品,那么查询会是什么呢? select * from product where brandid = null AND price = 10 and categoryid = 5 ... 这将不起作用,因为我不想搜索产品与brandid为空。我想从where条件中删除那个特殊的子句。那么我期望的查询是什么 select * from product where price = 10 and categoryid = 5

jdgnovmf

jdgnovmf1#

以增量方式构造查询。这里是ruby(因为您没有标记编程语言),但是逻辑是完全独立于语言的。

query = "SELECT * FROM products"
filters = []
params = []

if price_min
  filters << "price >= ?"
  params << price_min
end

if price_max
  filters << "price <= ?"
  params << price_max
end

if brand
  filters << "brand = ?"
  params << brand
end

# ...

unless filters.empty?
  query += " WHERE " + filters.join(' AND ')
end

相关问题