gpt4 book ai didi

mysql - 检测 mysql 中数据集内的更改

转载 作者:行者123 更新时间:2023-11-29 09:10:07 25 4
gpt4 key购买 nike

我有一个包含按时间排序的值的表:

id
date
value
对于数百条记录,

value 通常是相同的,我希望能够确定 value 何时发生变化。换句话说,我想知道d/dx(数据的导数)何时不等于0!

似乎应该有一个相当常见的模式,但我找不到任何示例或自己想出一个。我确实找到了an example完成此更改检测的位置,但我无法使用它,因为我的数据库适配器池连接和查询不一定在同一连接上发出。同样,我不想使用数据库触发器。

这是一个示例表:

id | date             | value
1 | 2011-04-05 12:00 | 33
2 | 2011-04-06 12:00 | 39
3 | 2011-04-07 12:00 | 39
...
72 | 2011-05-16 12:00 | 39
73 | 2011-05-17 12:00 | 37
74 | 2011-05-18 12:00 | 33
75 | 2011-05-19 12:00 | 33
...

我正在寻找一个可以拉回值发生变化的行的查询:

id | date             | value
1 | 2011-04-05 12:00 | 33
2 | 2011-04-06 12:00 | 39
73 | 2011-05-17 12:00 | 37
74 | 2011-05-18 12:00 | 33

第一行不必包含在结果中,因为具有相同值的表将返回零行(即没有更改)。

最佳答案

SELECT t.id, t.date, t.value, if( (

SELECT td.value AS last_value
FROM tab td
WHERE td.date < t.date
ORDER BY td.date DESC
LIMIT 1
) <> t.value, 'changed', 'unchanged' ) AS cstatus
FROM tab t order by date

这不是一个非常有效的查询,在大集合上速度很慢,但确实有效。添加一个计数器,假设 num_repeated 作为另一列,在插入时更新将是一个更好的解决方案。

关于mysql - 检测 mysql 中数据集内的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827363/

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