【问题标题】:updating mysql columns retrospectively using data from row使用行中的数据追溯更新 mysql 列
【发布时间】:2015-03-03 17:52:15
【问题描述】:

我们刚刚更改了一个网络应用程序中的一些功能,其中一个表中的每一行都需要添加新数据,数据是名称值和当前时间戳的 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。

【问题讨论】:

    标签: mysql database sql-update


    【解决方案1】:

    如果您查看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;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多