【问题标题】:Using time interval in table for select in another使用表中的时间间隔在另一个中选择
【发布时间】:2020-12-17 13:27:15
【问题描述】:

我正在使用带有 2 个表的 MySQL 数据库:

在一张表中,我有 BatchNum 和 Time_Stamp。在另一个我有ErrorCodeTime_Stamp

我的目标是使用一个表中的时间戳作为我想在另一个表中选择的间隔的开始和结束。我想选择BatchNum 不变的区间的开始和结束。

CREATE TABLE Batch (BatchNum INT, Time_Stamp DATETIME);
INSERT INTO Batch VALUES (1,'2020-12-17 07:29:36'), (1, '2020-12-17 08:31:56'), (1, '2020-12-17 08:41:56'), (2, '2020-12-17 09:31:13'), (2, '2020-12-17 10:00:00'), (2, '2020-12-17 10:00:57'), (2, '2020-12-17 10:01:57'), (3, '2020-12-17 10:47:59'), (3, '2020-12-17 10:48:59'), (3, '2020-12-17 10:50:59');

CREATE TABLE Errors (ErrorCode INT, Time_Stamp DATETIME);
INSERT INTO Errors VALUES (10, '2020-12-17 07:29:35'), (11, '2020-12-17 07:30:00'), (12, '2020-12-17 07:30:35'), (10, '2020-12-17 07:30:40'), (22, '2020-12-17 10:01:45'), (23, '2020-12-17 10:48:00');

在下面的示例中,我想要SELECT BatchNum , ErrorCode, Errors.Time_Stamp WHERE Erorrs.Time_Stamp BETWEEN beginning_of_batch and end_of_batch

    +----------+-----------+---------------------+
    | BatchNum | ErrorCode |  Errors.Time_Stamp  |
    +----------+-----------+---------------------+
    |        1 |        11 | 2020-12-17 07:30:00 |
    |        1 |        12 | 2020-12-17 07:30:35 |
    |        1 |        10 | 2020-12-17 07:30:40 |
    |        2 |        22 | 2020-12-17 10:01:45 |
    |        3 |        23 | 2020-12-17 10:48:00 |
    +----------+-----------+---------------------+

我正在使用上一个问题的答案:

Select on value change

查找BatchNum 更改,但我不知道如何将其包含在另一个选择中以使ErrorCodesBatchNum 更改定义的间隔内发生。

【问题讨论】:

    标签: mysql sql datetime inner-join


    【解决方案1】:

    我想你想要:

    select b.*, e.error_code, e.time_stamp as error_timestamp
    from (
        select b.*,
            lead(time_stamp) over(order by time_stamp) lead_time_stamp
        from batch b
    ) b
    inner join errors e 
        on  e.time_stamp >= b.time_stamp
        and (e.time_stamp < b.lead_time_stamp or b.lead_time_stamp is null)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2022-06-15
      • 2021-03-23
      相关资源
      最近更新 更多