MySQL where if 语句

MySQL where if statement

我目前正在使用 node.jsnode-mysql 开发 API。

我首先获取客户端发送的所有参数,如下所示:

  var userId = req.query.userId;
  var carType = req.query.carType;
  var hasOwnership = req.query.hasOwnership; (optional parameter)

我想做的是做一个声明,这样如果客户在请求中发送 hasOwnership 参数,我的声明将 return 所有属于他的汽车与特定车型。类似这样:

SELECT * FROM cars WHERE car_type=? AND owner_id=?, [carType, userId];

否则它只会 return 所有匹配汽车类型的汽车:

SELECT * FROM cars WHERE car_type=?, [carType];

是否可以在单个查询中完成这样的事情?

提前致谢!

一个肮脏的快速解决方案是使用 if then else。

如果 hasOwnership 具有使用查询 #1 的值,否则使用查询 #2

您可以像这样表达查询:

SELECT *
FROM car
WHERE (? is null or car_type = ?) AND
      (? is null or owner_id = ?);

请注意,除非您使用命名参数,否则此版本会使用每个参数两次。