【问题标题】:mysql Select Row by multiple conditionsmysql 通过多个条件选择行
【发布时间】:2018-05-06 11:30:35
【问题描述】:

我们正在研究一种基于多个条件选择 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. 第二种情况:日期:2018 年 11 月 26 日和 2600 小时。这应该会导致再次选择第 3 行。我们的逻辑类似于按小时或日期。为此,我不能在我的 SELECT WHERE 语句中简单地执行 OR,因为 Date 条件将由第二行满足,而这不是我们想要带回的行。

这几天我一直在尝试弄清楚如何做到这一点,但我一想到它就冻僵了。任何帮助将不胜感激。

【问题讨论】:

  • 你用自然语言写的:你需要使用日期和小时而不是日期或小时
  • 如果我对那里的第二种情况使用 AND,它不会带回任何东西,但我需要它来带回第 3 行。

标签: mysql sql select multiple-conditions


【解决方案1】:

为此,您需要使用 where 子句过滤掉您感兴趣的行。将 where 子句中的子句与 AND 连接以表示您希望所有这些子句对于相关行都为真:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2022-01-10
    • 2012-03-13
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多