2011-11-19 3 views
15

既存のテーブルにカラムを追加しました。今は、既存の列の内容に基づいて、MD5ハッシュをその新しい列に追加することによってテーブル内容を更新する必要があります。MySQL:MD5ハッシュを挿入して、完全なテーブルを更新します。各行に特定のテーブルを追加します。

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

ハッシュ= NULL 100万人以上の行は、あります。具体的には

。今度は、ハッシュをMD5文字列で更新する必要があります。名前: ハッシュ= MD5(テスト)

私は1行でそれを行う方法を知っています。しかし、単一のSQL文ですべての行に対してこれを行う方法はありますか?あなたは、あなたの質問に書いたように、テストがhash IS NULLないhash = NULLであること

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

注:

+1

質問を投稿することよりも、時にはそれがGoogleに迅速です... http://dev.mysql.com/doc/refman/5.5/en/update.html – Cylindric

答えて

18

はこれを試してみてください。

+0

どうもありがとう - それはのように働きました魅力! –

+0

ここは私のコードです:UPDATE users SET reference_id = MD5(name.now()) WHERE reference_idはNULLです。 エラー!関数名が存在しません –

+0

このクエリのパフォーマンスはどのくらいですか?より良い方法がありますか? <この古いスレッドをバンプして申し訳ありません> – noob333

0

更新の追加クエリを書く必要はありません。

  • ちょうどあなたがプロパティ
  • はあなたが見つけることができます上記のオプトの下で計算されたカラムの仕様
  • を見つける買ってあげるの下に、新たに作成された列を選択し、新しい列
  • を作成テーブルデザイン
  • に行きます式セクションにHashBytes([Algo]、[ColumnName])を入力します。

すでに存在する行のハッシュ値が自動的に作成されます。

Check the attached image for more clarification

関連する問題