使用行中的数据追溯更新mysql列

时间:2015-03-03 17:52:15

标签: 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 FROM projects WHERE id=79
        )
    ))

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

1 个答案:

答案 0 :(得分:0)

如果您查看this answer中的第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;

注意,这将更新表格的所有行。