MySQL使用附近日期的值更新空字段

时间:2015-12-12 14:26:49

标签: mysql

我有一个用日期/人物键入的表,它有两个值列(val1,val2)。在大多数情况下,他们都被填补。但是,有些情况(需要修复),其中一个填充,另一个为空。这些病例通常成对出现,相隔一天。对于每个人来说,彼此之间不会有两对。

我使用以下查询选择了在给定人员的另一个条目(占周末)的3天内的所有日期:

SELECT distinct t1.* from mytable t1
INNER JOIN mytable t2 ON t1.person = t2.person and t1.date <> t2.date 
WHERE abs(datediff(t1.date,t2.date))<= 3

返回:

+------------+------------+-------+-------+
| date       | person     | val1  | val2  |
+------------+------------+-------+-------+
| 2009-10-26 | A          |  null |    62 |
| 2009-10-27 | A          |     4 |  null |
| 2010-01-02 | A          |     2 |  null |
| 2010-01-04 | A          |  null |   101 |
| 2010-01-04 | B          |  null |    -4 |
| 2010-01-06 | B          |     3 |  null |
+------------+------------+-------+-------+

现在我想要做的事情(这就是我被困住的地方),就是使用从另一对中获取的缺失值来更新每对的早期日期的空值,以创建像这样的东西:

+------------+------------+-------+-------+
| date       | person     | val1  | val2  |
+------------+------------+-------+-------+
| 2009-10-26 | A          |    *4 |    62 |
| 2009-10-27 | A          |     4 |  null |
| 2010-01-02 | A          |     2 |  *101 |
| 2010-01-04 | A          |  null |   101 |
| 2010-01-04 | B          |    *3 |    -4 |
| 2010-01-06 | B          |     3 |  null |
+------------+------------+-------+-------+

提前致谢!

0 个答案:

没有答案