将值从一行复制到具有相同groupID的所有行

时间:2017-04-19 09:13:21

标签: mysql

这是我的MySQL表:

<pre>{{userForm.firstname.$viewValue}}</pre>

我想将每个组中的可用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 | 复制到具有相同groupID的所有行,以便我的最终表格如下所示:

values

一组没有固定数量的行数。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用更新联接来完成此操作。将您的初始表加入子查询,该子查询标识每个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子句。