MySQL-使用相同的密钥更新同级

MySQL-使用相同的密钥更新同级,mysql,sql,sql-update,Mysql,Sql,Sql Update,无法找到解决方案。。。虽然这可能是个新手问题,但我还没能克服。。。希望有人能帮忙 我有一个MySQL表,它有: 大宗报价 如何构造SQL更新来更新Col2,以便Col2上的值替换null,即C2R1和C2R3得到A1,C2R4得到B1?您可以按如下方式计算所需的值: CREATE TEMPORARY TABLE yourtemptable AS SELECT yourtable.col1, T1.col2 FROM yourtable JOIN ( SELECT col1, MAX(co

无法找到解决方案。。。虽然这可能是个新手问题,但我还没能克服。。。希望有人能帮忙

我有一个MySQL表,它有:

大宗报价


如何构造SQL更新来更新Col2,以便Col2上的值替换null,即C2R1和C2R3得到A1,C2R4得到B1?

您可以按如下方式计算所需的值:

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

然后,您可以删除/截断原始表并使用这些值重新创建它,或者如果无法删除该表,则可以执行多表操作。

您可以按如下方式计算所需的值:

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

然后,您可以删除/截断原始表并使用这些值重新创建它,或者如果无法删除该表,您可以改为执行多表。

尽管它可能不起作用(因为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

尽管它可能不起作用(因为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

非常感谢。工作得很好。然后我运行:
code
UPDATE tentrable internal Join kk ON tentrable.col1=kk.col1 SET kk.col2=tentrable.col2,其中((tentrable.col2'')或(tentrable.col2不为Null))和((kk.col2='')或(kk.col2为Null))
code速度非常慢(我的更新,不是非常快的临时表),但是成功了。真的非常感谢。以后会尽力帮助别人的。非常感谢。工作得很好。然后我运行:
code
UPDATE tentrable internal Join kk ON tentrable.col1=kk.col1 SET kk.col2=tentrable.col2,其中((tentrable.col2'')或(tentrable.col2不为Null))和((kk.col2='')或(kk.col2为Null))
code速度非常慢(我的更新,不是非常快的临时表),但是成功了。真的非常感谢。将来会尽力帮助别人。