gpt4 book ai didi

php - 我如何编写代码以显示 mysql 数据库中数据的每个更改

转载 作者:行者123 更新时间:2023-11-29 05:01:43 24 4
gpt4 key购买 nike

我有一个表格,其中包含以下格式的数据。

| ID  |        DateTime       | Value |
| 1 | 2019-08-12 05:07:25 | 0 |
| 2 | 2019-08-12 05:08:25 | 1 |
| 3 | 2019-08-12 05:09:25 | 1 |
| 4 | 2019-08-12 05:10:25 | 1 |
| 5 | 2019-08-12 05:11:25 | 0 |
| 6 | 2019-08-12 05:12:25 | 0 |
| 7 | 2019-08-12 05:13:25 | 0 |
| 8 | 2019-08-12 05:14:25 | 1 |
| 9 | 2019-08-12 05:15:25 | 1 |
|10 | 2019-08-12 05:16:25 | 0 |

从上表我需要将结果显示为

Record NO |      Start Time      |        Stop Time    |
1 | 2019-08-12 05:08:25 | 2019-08-12 05:11:25 |
2 | 2019-08-12 05:14:25 | 2019-08-12 05:16:25 |

对于记录 1,开始时间是第一个表 ID # 2,停止时间是 ID 5。
对于记录 2,开始时间是第一个表 ID # 8,停止时间是 ID 10。

最佳答案

回答您的评论:“Consider a situation where I need to access the available data, how could I do that?

一种方法是结合使用 LEFT JOIN 和派生表(子查询)。在第一个子查询中,我们为每条 Value = 1 的记录确定 EndTime

现在,由于 Value = 1 的连续记录问题,我们根据一组 EndTime 在外部查询中通过选择它们中的最小值来进一步过滤掉它>.

查询

SELECT Min(dt.`starttime`) AS `StartTime`,
dt.`endtime`
FROM (SELECT t1.`datetime` AS `StartTime`,
Min(t2.`datetime`) AS `EndTime`
FROM your_table_name AS t1
LEFT JOIN your_table_name AS t2
ON t2.`datetime` > t1.`datetime`
AND t2.`value` = 0
WHERE t1.`value` = 1
GROUP BY t1.`datetime`) AS dt
GROUP BY dt.`endtime`;

| StartTime | endtime |
| ------------------- | ------------------- |
| 2019-08-12 05:08:25 | 2019-08-12 05:11:25 |
| 2019-08-12 05:14:25 | 2019-08-12 05:16:25 |

View on DB Fiddle

关于php - 我如何编写代码以显示 mysql 数据库中数据的每个更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57669875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com