2011-03-14 13 views
5

Mi piacerebbe sapere come aggiornare più record contemporaneamente in cui è selezionato un determinato tipo di colonna.come modificare molti record contemporaneamente in phpmyadmin

Ho trovato come selezionare i record. Ho trovato come aggiornare i record. Ma non so come farlo entrambi insieme per farlo funzionare.

Selezione:

SELECT * FROM users DOVE E 'tipo' = 'nuovo'

Aggiornamento:

tabella di aggiornamento
colonna set = 937

Quindi, fondamentalmente voglio cambiare le informazioni nella 'colonna' a 937 nella 'tabella' se un'altra colonna 'tipo' è 'nuova'.

Grazie,

risposta

5

È possibile farlo semplicemente aggiungendo una clausola WHERE al UPDATE dichiarazione:

UPDATE `users` 
SET `myColumn` = 937 
WHERE `type` = 'new' 

Naturalmente, il cambiamento MyColumn per abbinare il vostro nome della colonna

+0

Grazie, sei il migliore! – dirk

0

si può fare questo con una subquery:

update users 
set column = 937 
where id in (select id from users where type='new') 

Basta cambiare le colonne nome se ho ottenuto che si sbagliavano.

+0

grazie per la tua risposta veloce, tuttavia non funziona. Ho ricevuto il seguente errore: Non è possibile specificare gli 'utenti' della tabella di destinazione per l'aggiornamento nella clausola DA – dirk

0

Dopo la ricerca per un po 'ho trovato un'altra soluzione per questo problema. Quando si fa riferimento alla stessa tabella o nome di campo in una query, lo spazio dei nomi in MySQL termina con i duplicati e fallisce. Per ovviare a questo, utilizzare la sintassi "AS" per denominare gli elementi duplicati. Inoltre, le query di aggiornamento richiedono spesso un campo chiave da utilizzare come parametro per la clausola where, questo è spesso il campo ID auto-incrementato. Questo esempio fornisce una soluzione per entrambi questi problemi.

UPDATE tbl 
    SET field=newValue 
    WHERE tbl.key IN 
     (SELECT idNew FROM 
      (Select tbl.key AS idNew 
      FROM tbl 
      WHERE field=editValue) AS tblNew); 
  • TBL - nome della tabella in corso di aggiornamento

  • campo - campo Destinazione per l'aggiornamento

  • newValue - Valore da sostituire gli elementi nel campo di destinazione

  • tbl.key - Nome del campo per la chiave nella tabella

  • idNew - Nuovo nome per la chiave nella tabella, per sostituire il nome e impedire l'errore dalla duplicazione dei nomi nella query. potrebbe essere una stringa alfanumerica. 'Id' o 'ID_NUOVO' o 'id_n'

  • editValue - Il valore per cambiare

  • tblNew - Nuovo nome per la query, per evitare che i nomi di tabella duplicati nella query.Potrebbe essere una qualsiasi stringa alfanumerica 'tbl_n' o 'tbl_new' o 'tbl_test'

Questa query ottiene i valori chiave per tutti i record che soddisfano i record con valori che si desidera modificare, poi cambia il nome della chiave e tbl in modo che possano essere elaborati da MySQL, infine la query di aggiornamento viene eseguita e modifica i valori in base alle chiavi fornite nella sottoquery.

Speriamo che questo salvi qualcun altro poche ore!

Problemi correlati