mysql - 考虑参数子集的选择

标签 mysql sql rdbms

我有下表订单,其中包含列:

  • order_id,
  • 时间戳
  • 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;

最佳答案

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

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/

相关文章:

mysql - 将 Sql Server 查询转换为 MySql Server 查询

sql - 在 MS SQL Server 2005 中使用 RAND() 时我做错了什么?

sql - 具有冗余值的渐进排名

java - 商业智能中的 "multidimensinal data"是什么?

mysql - mysql中soundex的逆向

MySQL LOAD DATA INFILE 查询成功运行但没有输出

php - mysql 查询在 php 中失败

Java比较类的元素

python - SELECT 中的多个连接

database - 为什么 PostgreSQL 中的聚合函数不适用于 bool 数据类型