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

时间:2011-11-19 19:09:32

标签: mysql sql sql-update md5

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

更确切地说:

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

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

我知道怎么做一行。但是如何在单个SQL语句中对所有行执行此操作?

2 个答案:

答案 0 :(得分:20)

试试这个:

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

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

答案 1 :(得分:0)

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

  • 转到桌面设计
  • 创建新列
  • 选择新创建的列,您将获得属性
  • 查找计算列规范
  • 根据以上选项,您会发现公式部分写为HashBytes([Algo],[ColumnName])

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

Check the attached image for more clarification