MySQL where if 语句
MySQL where if statement
我目前正在使用 node.js
和 node-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 = ?);
请注意,除非您使用命名参数,否则此版本会使用每个参数两次。
我目前正在使用 node.js
和 node-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 = ?);
请注意,除非您使用命名参数,否则此版本会使用每个参数两次。