我有下表订单
,其中包含列:
order_id
,时间戳
,worker_id
,costumer_id
,start_ts
,end_ts
根据start_ts
、end_ts
、worker_id
和costumer_id的任意组合查询数据库的最佳方式是什么?
?
如果省略 start_ts
我会:
SELECT *
FROM Orders
WHERE timestamp <= end_ts
AND worker_id = <worker_id>
AND costumer_id = <costumer_id>;
如果省略 worker_id
和 costumer_id
:
SELECT *
FROM Orders
WHERE timestamp BETWEEN start_ts AND end_ts;
最佳答案
您可以组合多个条件,如下所示:
SELECT *
FROM Orders
WHERE (timestamp >= <start_ts> or <start_ts> is null)
AND (timestamp <= <end_ts> or <end_ts> is null)
AND ... ;
Where ...
表示任意多个 WHERE
条件,根据需要使用 AND
进行组合。
关于mysql - 考虑参数子集的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36262407/