gpt4 book ai didi

mysql - 如何用前几行的值填充空单元格

转载 作者:行者123 更新时间:2023-11-29 03:30:34 28 4
gpt4 key购买 nike

我有一个类似于以下示例的表格。我想用以前的值替换列中的缺失值(如果有的话)。所以对于这张表:

 col1      col2    

0.1 0.2
0.23 0.53
- 0.46
0.77 -
- 0.32

我希望得到以下结果:

 col1      col2

0.1 0.2
0.23 0.53
0.23 0.46
0.77 0.46
0.77 0.32

最佳答案

为此,您需要为前一行提供某种标识符。假设(因为我正在等待对您的示例中的“上一个”进行澄清),假设您对每一行都有一个主键标识符:

| id | col1 | col2 |
+----+------+------+
| 1 | 0.1 | 0.2 |
| 2 | 0.23 | 0.53 |
| 3 | null | 0.46 |
| 4 | 0.77 | null |
| 5 | null | 0.32 |

您可以使用先前主键的值来更新表。您可以JOIN两个表,条件是id与前一个表匹配,并相应地设置col1值,如下所示:

UPDATE myTable m
JOIN myTable mt ON (m.id - 1) = mt.id
SET m.col1 = mt.col1 WHERE m.col1 IS NULL;

要在同一更新查询中对两列执行此操作,您需要添加 IF 语句:

UPDATE myTable m
JOIN myTable mt ON (m.id - 1) = mt.id
SET m.col1 =
CASE WHEN m.col1 IS NULL THEN
mt.col1
ELSE
m.col1
END,
m.col2 =
CASE WHEN m.col2 IS NULL THEN
mt.col2
ELSE
m.col2
END;

这是另一个 reference在条件更新上,以及一个 SQL Fiddle例子。目前我无法运行查询,只能运行构建模式选项。我会尽可能用结果编辑这个答案。

请注意,如果一行中有两个空值,这将不起作用。如果可能,您将需要加入最近的非空 ID 上的行。

关于mysql - 如何用前几行的值填充空单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31276169/

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