MySQL:更新整个表,为每一行插入一个特定的MD5哈希值

19

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

更加具体地说:

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

有超过100万行数据,其中哈希值为NULL。现在我需要用基于相应列(例如名称)的MD5字符串更新哈希值:

hash = MD5(test)

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


2
有时候用谷歌搜索比发帖提问更快... http://dev.mysql.com/doc/refman/5.5/en/update.html - Cylindric
2个回答

23

试一下这个:

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

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


这是我的代码:UPDATE users SET reference_id = MD5(name.now()) WHERE reference_id IS NULL。 错误!函数名不存在。 - Ragavendran Ramesh
这个查询的性能如何?有更好的方法吗?<很抱歉顶起了这个旧帖> - noob333

0

不需要编写额外的查询来进行更新。

  • 只需进入表设计
  • 创建一个新列
  • 选择新创建的列,在下面你会看到属性
  • 查找计算列规范
  • 在上述选项下,您将找到公式部分,写入HashBytes([Algo], [ColumnName])

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

请查看附加的图片以获得更多说明


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接