这是我的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/

10-13 02:47