我目前正在使用node.js
和node-mysql
处理API。
我首先抓住客户端发送的所有参数,如下所示:
var userId = req.query.userId;
var carType = req.query.carType;
var hasOwnership = req.query.hasOwnership; (optional parameter)
我想做的是做一个声明,这样如果客户端发送带有请求的hasOwnership
参数,我的声明将返回属于他的所有车辆的特定车型。与此类似:
SELECT * FROM cars WHERE car_type=? AND owner_id=?, [carType, userId];
否则它将返回与汽车类型匹配的所有汽车:
SELECT * FROM cars WHERE car_type=?, [carType];
是否可以在单个查询中完成类似的操作?
提前致谢!
答案 0 :(得分:1)
您可以将查询标记为以下内容:
SELECT *
FROM car
WHERE (? is null or car_type = ?) AND
(? is null or owner_id = ?);
请注意,此版本将每个参数两次,除非您使用命名参数。
答案 1 :(得分:0)
一个简单的快速解决方案是使用if then else。
如果hasOwnership具有值,则使用查询#1否则使用查询#2