【问题标题】:MySQL: Update a full table, inserting a MD5 hash, for each row a specific oneMySQL:更新一个完整的表,插入一个 MD5 哈希,为每一行一个特定的
【发布时间】:2012-01-02 01:11:46
【问题描述】:

我在现有表中添加了一列。现在我需要根据现有列的内容,通过向该新列添加 MD5 哈希来更新表格内容。

更准确地说:

id | name | date-of-birth | hash
1  | test | 12.12.12      | NULL

有超过 100 万行,其中 hash = NULL。现在我需要使用 MD5 字符串更新哈希,它基于相应的列,例如姓名: 哈希 = MD5(测试)

我知道如何为单行执行此操作。但是如何对单个 SQL 语句中的所有行执行此操作?

【问题讨论】:

标签: mysql sql sql-update md5


【解决方案1】:

无需为更新编写额外的查询。

  • 去表设计就行了
  • 创建一个新列
  • 选择新创建的列,下面你会得到属性
  • 查找计算列规范
  • 在上面的选项下,您会发现公式部分 write HashBytes([Algo], [ColumnName])

它会自动为已经存在的行创建一个哈希值。

Check the attached image for more clarification

【讨论】:

    【解决方案2】:

    试试这个:

    UPDATE yourtable
    SET hash = MD5(name)
    WHERE hash IS NULL
    

    请注意,测试是hash IS NULL,而不是您在问题中写的hash = NULL

    【讨论】:

    • 这是我的代码:更新用户 SET reference_id = MD5(name.now()) WHERE reference_id 为 NULL。错误 !函数名不存在
    • 这个查询的性能如何?有没有更好的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多