2011-11-19 10 views
15

Ho aggiunto una colonna a una tabella esistente. Ora ho bisogno di aggiornare il tablecontent aggiungendo un hash MD5 a quella nuova colonna, in base al contenuto di una colonna esistente.MySQL: aggiornamento di una tabella completa, inserimento di un hash MD5, per ogni riga uno specifico

Per essere più precisi:

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

Ci sono più di 1 milione di righe, dove hash = NULL. Ora ho bisogno di aggiornare l'hash con una stringa MD5, che è basata su una colonna corrispondente, ad es. nome: hash = MD5 (test)

So come farlo per una singola riga. Ma come farlo per tutte le righe in una singola istruzione SQL?

+1

A volte è più veloce a Google che per pubblicare una domanda ... http://dev.mysql.com/doc/refman/5.5/en/update.html – Cylindric

risposta

18

Prova questo:

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

Nota che il test è hash IS NULL e non hash = NULL come hai scritto nella tua domanda.

+0

Grazie mille - ha funzionato come un fascino! –

+0

ecco il mio codice: UPDATE utenti SET reference_id = MD5 (name.now()) WHERE reference_id IS NULL. Errore! Il nome della funzione non esiste –

+0

Qual è il rendimento di questa query? Ci sono modi migliori? noob333

0

Non è necessario scrivere una query aggiuntiva per l'aggiornamento.

  • Basta andare al design del tavolo
  • creare una nuova colonna
  • selezionare nuova colonna creata, di seguito si otterrà proprietà
  • trovare per computerizzata Specification Colonna
  • Sotto sopra opt troverete sezione formula scrivi HashBytes ([Algo], [ColumnName])

creerà automaticamente un valore di hash per le righe già presenti.

Check the attached image for more clarification

Problemi correlati