Mysql 使用相邻行更新表字段值
首先,我不确定这在Mysql 使用相邻行更新表字段值,mysql,Mysql,首先,我不确定这在mysql限制内是否可行。无论如何,我会把它贴出来 假设我有一个带有id和date的表。但由于某种原因,表格中缺少了一些日期。所以我基本上需要的是,用邻接行日期值更新那些缺少的日期 +-----------+---------------------+ | id | date | +-----------+---------------------+ | 1000 | 2016-11-22 11:57:59 | | 1
mysql
限制内是否可行。无论如何,我会把它贴出来
假设我有一个带有id
和date
的表。但由于某种原因,表格中缺少了一些日期。所以我基本上需要的是,用邻接行日期值更新那些缺少的日期
+-----------+---------------------+
| 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 |
+-----------+---------------------+
根据上面的例子,我有一些规则来更新id1001
,1006
和1007
缺少的日期值,如下所示
1001
将使用1000
日期值更新,该日期值为2016-11-22 11:57:59
id acs
顺序相关,这样我们就不会因为上面一行中没有值而遇到任何麻烦。因为即使它最初丢失,但在到达该行之前将更新,例如:1007
:1006
最初丢失,但它将使用1005
更新,然后当它到达1007
时,1006
已经有一个值。最后,1006
和1007
都有1005日期值,即2016-11-22 13:59:40
希望我能清楚地解释这个问题,但我仍然不确定纯
mysql
query是否能做到这一点 事实上,mysql使用update和join很有可能做到这一点。但是,由于有连续的空值,因此必须多次运行查询
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的行中的值,该行恰好为空。因此,您将需要第二次迭代来修复这些空值
备注:change将清空为您的表名