SELECTION考虑参数子集

时间:2016-03-28 12:34:03

标签: mysql sql rdbms

我有下表Orders,其中包含列:

  • order_id
  • timestamp
  • worker_id
  • costumer_id
  • start_ts
  • end_ts

根据start_tsend_tsworker_idcostumer_id的任意组合查询数据库的最佳方法是什么?

如果省略start_ts,我会:

SELECT *
  FROM Orders
  WHERE timestamp <= end_ts
    AND worker_id = <worker_id>
    AND costumer_id = <costumer_id>;

如果省略worker_idcostumer_id

SELECT *
  FROM Orders
  WHERE timestamp BETWEEN start_ts AND end_ts;

1 个答案:

答案 0 :(得分:0)

您可以组合多个条件,如下所示:

SELECT * 
  FROM Orders 
  WHERE (timestamp >= <start_ts> or <start_ts> is null)
    AND (timestamp <= <end_ts> or <end_ts> is null)
    AND ... ;

...表示尽可能多WHERE条件,使用AND组合,如您所愿。

相关问题