使用行中的数据回顾性更新mysql列

使用行中的数据回顾性更新mysql列,mysql,database,sql-update,Mysql,Database,Sql Update,我们刚刚更改了一个web应用程序中的一些功能,其中一个表中的每一行都需要添加新数据,数据是名称值和当前时间戳的8个字符哈希 我正在尝试更新2列,因为我们还需要切换到周围的列 UPDATE projects SET uri_hash = (SELECT slug FROM projects WHERE id = 79), slug = MD5(SHA1(CONCAT( CURRENT_TIMESTAMP, ( SELECT name FR

我们刚刚更改了一个web应用程序中的一些功能,其中一个表中的每一行都需要添加新数据,数据是名称值和当前时间戳的8个字符哈希

我正在尝试更新2列,因为我们还需要切换到周围的列

    UPDATE projects 
SET uri_hash = (SELECT slug FROM projects WHERE id = 79), 
    slug = MD5(SHA1(CONCAT(
        CURRENT_TIMESTAMP, (
            SELECT name FROM projects WHERE id=79
        )
    ))

我做错了什么,基本上我希望uri_hash的值等于slug列,然后我希望MD5和SHA1加密当前时间戳和名称值,并将其分配给slug。

如果查看中的第4点,并假设id是表中的主键,则以下操作应该有效:

UPDATE projects p1, projects p2 
SET p1.uri_hash = p1.slug, p1.slug=MD5(SHA1(CONCAT(CURRENT_TIMESTAMP,p2.name) 
WHERE p1.id=p2.id;
注意,这将更新表中的所有行