我有这张表:
num | id | value1 | value2 | ..... | valueN
____|____|________|________|_______|_______
1 | 1 | val1 | val2 | ..... | valN
2 | 1 | blah | NULL | ..... | NULL
1 | 2 | val12 | val22 | ..... | valN2
2 | 2 | blah2 | NULL | ..... | NULL
num
和 id
是主键。具有 1 num
的每一行是填充了所有列的行,以及该 id
的所有其他行(其中 num
大于 1 )有空列,我想用具有相同 id
的 num
=1 中的列中的相应值进行填充。
我可以编写一个脚本,该脚本在所有 num
>1 行上运行,然后在每个 空列上运行,并从 num
中获取它>=1 行,但是有没有更 SQL 的方式来做到这一点?更通用的东西,无需迭代每一列?
最佳答案
好吧,您可以尝试使用 cross-table UPDATE JOIN 更新所有行
UPDATE mytbl AS a
INNER JOIN (SELECT * FROM mytbl WHERE num = 1) AS b ON a.id = b.id
SET a.value1 = b.value1,
a.value2 = b.value2,
...
a.valueN = b.valueN
WHERE a.num > 1
关于mysql - 如何使用另一行中的值填充所有行中的空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28409399/