这是我的MySQL表:
ID | groupID | value
------------------------------
1 | 1 |
2 | 1 | 0.34353
3 | 1 |
4 | 2 |
5 | 2 | 0.23232
6 | 3 |
7 | 3 |
8 | 3 | 1.23234
9 | 3 |
我想将可用的
values
从每个组复制到具有相同groupID的所有行,这样我的最终表将如下所示:ID | groupID | value
------------------------------
1 | 1 | 0.34353
2 | 1 | 0.34353
3 | 1 | 0.34353
4 | 2 | 0.23232
5 | 2 | 0.23232
6 | 3 | 1.23234
7 | 3 | 1.23234
8 | 3 | 1.23234
9 | 3 | 1.23234
一个组有多少行没有固定的数量。我该怎么做?
最佳答案
您可以使用更新联接来完成此任务。将初始表连接到一个子查询,该子查询标识每个NULL
的非groupID
值。引入该信息后,将非NULL
值列更新为子查询中的值。
UPDATE yourTable t1
INNER JOIN
(
SELECT groupID, MAX(value) AS value
FROM yourTable
GROUP BY groupID
) t2
ON t1.groupID = t2.groupID
SET t1.value = t2.value
WHERE COALESCE(t1.value, '') = ''
更新:
对于丢失的数据,您可能有空字符串,并且/或者除此之外还有
NULL
。在这种情况下,MAX()
应该仍然能够获取未丢失的数据,但是我适当地更改了WHERE
子句。关于mysql - 将值从一行复制到所有具有相同groupID的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43491321/