mysql 通过多个条件选择行

标签 mysql sql select multiple-conditions

我们正在研究一种根据多个条件选择 1 行的方法。一个例子将阐明这一点。以下是我们的数据集的示例。

Name        StartDate     EndDate     HoursBegin    HoursEnd     RowID
Test 1      11/24/2017    8/24/2018   121           1000         1382
Test 2      11/25/2018    8/24/2020   1001          2500         1383
Test 3      11/25/2020    8/24/2022   2501          4000         1384

我正在寻找一个查询,该查询将采用几个条件(日期和时间)并决定该条件适合哪一行。考虑以下 2 个示例。

  1. 最简单的情况:日期:2021 年 11 月 25 日,2600 小时。这应该会导致选择第三行,因为同一行满足两个条件。
  2. 第 2 种情况:日期:2018 年 11 月 26 日,时间 2600。这应该会导致再次选择第 3 行。我们的逻辑类似于按小时或日期。为此,我无法在 SELECT WHERE 语句中简单地执行 OR 操作,因为第二行将满足日期条件,而这不是我们想要返回的行。

这几天我一直在试图弄清楚如何做到这一点,但一想到它,我的大脑就卡住了。任何帮助将不胜感激。

最佳答案

为此,您需要使用 where 子句来过滤出您感兴趣的行。将 where 子句中的子句与 AND 连接起来,表示您希望所有子句都为 true有问题的行:

where startdate < '11/25/2021' and enddate > '11/25/2021' and
      hoursbegin < '2600' and hoursend > '2600'

某些 SQL 平台有 Between 运算符

where '11/25/2021' between startdate and enddate and
      '2600' between hoursbegin and hoursend

关于mysql 通过多个条件选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47439574/

相关文章:

sql - 如何编写最佳 SQL 查询

javascript - 在 <span> onClick 中选择文本

mysql - SQL 选择仅包含特殊字符的值

MySQL 连接表 SUM 和 extra 子句

mysql - 短路UNION? (如果第一个子句没有结果,只执行第二个子句)

MySQL:如何插入具有链接到其他两个表的两个外键的表?

php - 如何使用 Propel ORM 中的 SQL "replace"函数?

MYSQL 从 2 个表中选择一个 id 只在其中一个表中

php - MySQL/Mariadb 进程在前一个进程完成之前不会运行

php - 根据一行中的 id 获取两个用户名