UPDATE con SELECT in MySQL
A vole può capitare di dover fare UPDATE massicci su una tabella controllando però determinate condizioni su un'altra tabella collegata.
Ad esempio nel mio caso ho una tabella articoli; il prezzo degli articoli è su un'altra tabella collegata tramite il codice dell'articolo.
Io dovevo impostare il flag abilitato su tutti quegli articoli che avevano un prezzo maggiore di uno.
Quindi in linea teorica è questo: aggiorna la tabella articoli settando 1 sul campo abilitato in tutti gli articoli che nella tabella listini_righe hanno il prezzo maggiore di 1.
In MySQL è uscita una cosa così:
UPDATE articoli SET abilitato = 1
WHERE articolo_codice IN (SELECT articolo_codice FROM listini_righe WHERE listino_righe_prezzo > 1);
Come vedete nella clausola WHERE eseguiamo una ricerca degli articoli eseguendo un'altra SELECT usando IN.
La cosa è abbastanza semplice.
Ovviamente le tabelle devono essere collegate e nella seconda SELECT il campo di ricerca deve essere uno; quello collegato.
Non si può fare così ad esempio:
UPDATE articoli SET abilitato = 1
WHERE articolo_codice IN (SELECT * FROM listini_righe WHERE listino_righe_prezzo > 1);
MySQL da errore perchè non saprebbe dove cercare.
mysql update select where
Commentami!