MySQL - 使用相同的密钥更新兄弟姐妹

时间:2011-10-09 05:27:43

标签: mysql sql sql-update

找不到解决方案......虽然这可能是一个新手问题,但我还是无法克服......希望有人能伸出援手。

我有一个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?

2 个答案:

答案 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