gpt4 book ai didi

mysql - 使用相邻行更新表字段值

转载 作者:行者123 更新时间:2023-11-29 02:46:50 24 4
gpt4 key购买 nike

首先,我不确定这在 mysql 限制内是否可行。无论如何,我会发布它。

假设我有一个包含iddate 的表。但由于某种原因,表格中缺少一些日期。所以我基本上需要的是,用相邻行日期值更新那些缺失的日期。

+-----------+---------------------+
| id | date |
+-----------+---------------------+
| 1000 | 2016-11-22 11:57:59 |
| 1001 | NULL |
| 1002 | 2016-11-22 12:17:41 |
| 1003 | 2016-11-22 13:09:24 |
| 1004 | 2016-11-22 22:40:31 |
| 1005 | 2016-11-22 13:59:40 |
| 1006 | NULL |
| 1007 | NULL |
| 1008 | 2016-11-22 15:10:29 |
| 1009 | 2016-11-22 22:40:31 |
+-----------+---------------------+

根据上面的示例,我几乎没有规则来更新 id 100110061007 的缺失日期值,如下所示。

  1. 如果有任何遗漏的日期,它应该总是用上面的记录更新。例如:1001 将更新为 1000 日期值,即 2016-11-22 11:57:59
  2. 记录更新必须按照id acs顺序进行,这样我们就不会因为没有上一行的值而遇到任何麻烦。因为即使它最初丢失,但会在到达该行之前更新,例如:1007:1006 最初丢失,但它会更新为 1005 那么到了 1007 时,1006 已经有了值。最后 10061007 都有 1005 日期值,即 2016-11-22 13:59:40

希望我能清楚地解释这个问题,但我仍然不确定纯 mysql 查询是否可行。

最佳答案

实际上,使用 update 和 join 的 mysql 很有可能做到这一点。但是,由于您有连续的空值,因此您将不得不多次运行查询。

UPDATE empties e1, empties e2 set e1.`date` = e2.`date` 
WHERE e1.`date` IS NULL and e1.id = e2.id+1;

请注意,在此查询中,分配给 id=1007 的值是来自 id=1006 的行中恰好为 NULL 的值。因此,您将需要第二次迭代来修复这些空值。

ps:将 emptys 更改为您的表名。

关于mysql - 使用相邻行更新表字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40968252/

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