MySQL中的多个条件

时间:2018-09-06 06:29:48

标签: mysql mysql-workbench

我想根据价格品牌类别过滤产品。但它们都不是必需的。因此,用户可以仅根据价格或价格和品牌来过滤产品。如何仅使用查询 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 null的产品。我想要的是从where条件中删除该特定子句。所以我期望的查询是select * from product where price = 10 and categoryid = 5

1 个答案:

答案 0 :(得分:1)

以增量方式构造查询。这里是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