2012-12-07 16 views
6

Uso questo per modificare (aggiungere punti) righe che mgroup è 15aggiornamento SQL più righe con lo stesso valore

UPDATE ibf_members SET points = points + 500 WHERE mgroup = 15 

Cosa posso usare per aggiornare (aggiungere punti + 500) per le righe che ha il suo id come 5, 7, 10, 11, 16, 25e ha anchemgroup come 15?

risposta

14

È possibile utilizzare la clausola IN per questo, che è più facile da leggere (e possibilmente più efficiente?) Rispetto alla creazione di un gigantesco elenco OR. Provare qualcosa di simile:

UPDATE ibf_members 
SET points = points + 500 
WHERE mgroup = 15 
AND id IN (5, 7, 10, 11, 16, 25); 
+0

Non c'è differenza in termini di efficienza (tranne che per il minor numero di byte nella trasmissione della query) –

+0

@ypercube - I' Prenderò la tua parola, non conosco il pianificatore di query mySql. –

+3

Link alla documentazione MySQL: [Ottimizzazioni primarie] (http://dev.mysql.com/doc/internals/en/optimizer-primary -optimizations.html). Cerca * "e MySQL li tratta allo stesso modo - non è necessario cambiare IN in OR per una query, o viceversa." * –

1

Basta aggiungere un'altra condizione al tuo clausola WHERE:

UPDATE ibf_members SET points = points + 500 WHERE mgroup = 15 AND id IN (5, 7, 10, 11, 16, 25) 
Problemi correlati