MySQL: обновить полную таблицу, вставив хэш MD5, для каждой строки определенную - PullRequest
17 голосов
/ 19 ноября 2011

Я добавил столбец в существующую таблицу.Теперь мне нужно обновить содержимое таблицы, добавив к этому новому столбцу хеш MD5 на основе содержимого существующего столбца.

Точнее,

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

Существует более1 миллион строк, где хэш = NULL.Теперь мне нужно обновить хеш с помощью строки MD5, которая основана на соответствующем столбце, например, name: hash = MD5 (test)

Я знаю, как это сделать для одной строки.Но как это сделать для всех строк в одном операторе SQL?

Ответы [ 2 ]

20 голосов
/ 19 ноября 2011

Попробуйте:

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

Обратите внимание, что тест hash IS NULL, а не hash = NULL, как вы написали в своем вопросе.

0 голосов
/ 07 октября 2016

Не нужно писать дополнительный запрос на обновление.

  • Просто перейдите к дизайну таблицы
  • создайте новый столбец
  • выберите новый созданный столбец, ниже вы получите свойства
  • Найти для вычисленияСпецификация столбца
  • В приведенной выше опции вы найдете раздел формулы напишите HashBytes ([Algo], [ColumnName])

, он автоматически создаст значение хеша для уже существующих строк.

Проверьте прилагаемое изображение для уточнения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...