找不到解决方案......虽然这可能是一个新手问题,但我还是无法克服......希望有人能伸出援手。
我有一个MySQL表:
块引用
Col1 Col2
Row1 A null
Row2 A A1
Row3 A null
Row4 B null
Row5 B B1
etc
> Blockquote
如何构建SQL更新以更新Col2,以便Col2上的值替换为null,即C2R1和C2R3获取A1,C2R4获得B1?
答案 0 :(得分:1)
您可以按如下方式计算所需的值:
CREATE TEMPORARY TABLE yourtemptable AS
SELECT yourtable.col1, T1.col2
FROM yourtable
JOIN
(
SELECT col1, MAX(col2) AS col2
FROM yourtable
GROUP BY col1
) T1
ON yourtable.col1 = T1.col1
然后您可以删除/截断原始表并使用这些值重新创建它,或者如果您不能删除表,则可以改为执行多表update。
答案 1 :(得分:0)
虽然它可能不起作用(因为MySQL文档声明目前,您无法更新表并从子查询中的同一个表中进行选择。),您应该尝试使用以下内容:
UPDATE table1 SET col2 = (SELECT t2.col1 FROM table1 t2 WHERE t2.col1 = table1.col1 AND NOT t2.col2 IS NULL LIMIT 1) WHERE table1.col2 IS NULL