gpt4 book ai didi

mysql - 从相邻行填充表值

转载 作者:行者123 更新时间:2023-11-29 19:12:26 25 4
gpt4 key购买 nike

我有一个 MySQL 表,该表具有插入行时的整数时间戳字段,但插入软件中的错误使其中一些字段为 0。表中只有大约 80% 的行具有有效时间戳。它不是必要的数据,因此“伪造”时间戳足以修复表。

由于所有行都是按顺序插入的,因此将行的时间戳设置为值为 != 0 的最后一行是有意义的

什么样的查询可以“填补空白”100.000 行而不需要很长时间?

最佳答案

我假设您有一个带有 AUTO_INCRMENT 的 ID。在这种情况下,您可以使用以下类型的代码。

  1. 首先创建一个临时表,因为无法将数据插入表中,同时查询同一个表的数据
  2. 将数据插入临时表
  3. 更新第一个表中的数据
  4. 删除临时表

我不确定你的结构,但尝试如下所示

CREATE TABLE `temp_table` (id int NOT NULL PRIMARY_KEY, `timestamp` int NOT NULL);

INSERT INTO `temp_table` (`id`, `timestamp`)
SELECT a.id, MAX(b.`timestamp`)
FROM `your_table` a
LEFT JOIN `your_table` b
ON b.`id` < a.`id`
WHERE a.`timestamp` = 0 AND b.`timestamp` != 0
GROUP BY a.`id`;

UPDATE `your_table` a
INNER JOIN `temp_table` b
ON b.`id` = a.`id`
SET a.`timestamp` = b.timestamp;

DROP TABLE `temp_table` ;

也不知道它会多快,我认为它会在适当的时间内运行

关于mysql - 从相邻行填充表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42977075/

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