gpt4 book ai didi

mysql - 移动整个键范围

转载 作者:可可西里 更新时间:2023-11-01 07:35:53 25 4
gpt4 key购买 nike

我正在处理时间序列数据,其关键列是时间戳:时间。每行还有许多“值”列。

我将把我的整个数据范围移动几个小时(由于夏令时问题)。为此,我将更新几行的键,这可能会导致一些重复的键。我希望忽略日期范围边缘的重复键。我希望移动范围覆盖旧范围。

我打算做类似的事情:

UPDATE IGNORE time_series_table 
SET time=time-<some_shift>
WHERE <time in a date-range>

这是 describe <table> 的输出对于时间键:

Field     Type      Null Key     Default Extra
TimeMeas datetime NO PRI NULL

我的问题是:它会一次移动所有键,还是会尝试逐行移动,从而导致在移动范围内产生大量重复键?

您有更好的方法吗?提前致谢

最佳答案

Will it shift all the keys at once, or will it try to shift each row one by one

它将一次移动所有键。

resulting in massive duplicate keys wihthin the shifted range itself ?

如果任何一个主键重复,它就会失败。
使用 update ignore,它只是默默地跳过。

这是我解决这个问题的方法

/* create a temporary table to store matches records*/
create table tmp_table select time-<some_shift>, etc_cols....
from time_series_table
where <time in a date-range>;

然后

/* delete the matches in the original table */
delete from time_series_table where <time in a date-range>;
delete from time_series_table where <time in a date-range - some_shift>;

最后

/* at this point, there won't be any duplicate data */
/* so, insert back into original table */
insert into time_series_table select * from tmp_table;
optmize table time_series_table;

关于mysql - 移动整个键范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7594747/

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